2012-01-04 83 views
7

在一個pageLoad事件我要到兩個不同的SharePoint列表,並從一個列表獲得第一個列表項和其他的最後一個列表項。我不知道任何ListItem ID的,所以我想這需要通過列表索引完成 - 只是不知道如何實現這一點。在列表中處理好後,有人可能會建議(使用c#)獲取上述場景的第一個和最後一個項目的最佳方式?得到的第一個和最後一個ListItem在SharePoint列表

回答

14

條件「第一項」和「最後一個項目」不是很清楚。假設你想檢索第一個和最近的創建的項目。需要注意的是,通過SPListItemCollection的索引檢索項目可以因爲訪問SPList.Items返回列表的所有項目大型列表會很慢。這就是爲什麼我建議使用CAML查詢:

SPList list = // some list; 
SPQuery query = new SPQuery(); 
query.RowLimit = 1; 
query.Query = "<OrderBy><FieldRef Name='ID' /></OrderBy>"; 

return list.GetItems(query).Cast<SPListItem>().FirstOrDefault(); 

對於「最後一項」你必須扭轉排序:

<OrderBy><FieldRef Name='ID' Ascending='FALSE' /></OrderBy> 

如果你想獲得最後和第一項基於另一個條件你只需要按字段更改訂單。

更新:
更妙的是由ID現場訂購。這樣你就可以達到同樣的結果。 不僅更好,創建的字段可以通過@Kobi指出的代碼進行更改。

+1

很不錯的。我也建議使用ID,「創建」日期可以通過代碼設置。另外,如果列表很小,我不確定我會不打擾查詢。 – Kobi 2012-01-04 12:37:01

+0

@Kobi,那是真的。我會將我的示例更改爲ID ... thx。 – Stefan 2012-01-04 12:39:35

2

你可以試試這個得到最後ITEMID

SPWeb web = SPContext.Current.Web; 
      SPList List = web.Lists[ListName]; 

      int itemId = List.Items[List.ItemCount - 1].ID; 

商祺!

+1

如果我們刪除了兩個項目它不工作 – TinTin 2013-01-07 15:27:38

+0

這對我很好。我需要對一個已排序的SPListCollection執行一些操作,並且在我全部完成它們之前,我需要最後一項的值。這使我無需編寫額外的CAML查詢即可完成。謝謝! – Chronozoa 2014-03-06 16:34:42

+0

如何關於刪除項目ID ??! – 2017-09-14 05:09:58

相關問題