2012-01-04 18 views
7

pageLoadイベントでは、2つの異なるSharePointリストに行き、最初のListItemを1つのリストから取得し、最後のListItemを別のリストアイテムから取得します。私はListItem IDのどれかを知らないので、これはリストのインデックスを通して行う必要があると思います - これを実装する方法がわかりません。リストにハンドルがあると、上で概説したシナリオの最初と最後の項目を取得する最良の方法を(C#を使用して)アドバイスできますか?Sharepointリストの先頭と最後のListItemを取得

答えて

14

"最初のアイテム"と "最後のアイテム"の条件はあまり明確ではありません。あなたが最初に最新のアイテムを取得したいと仮定します。重要なのは、SPList.Itemsにアクセスすると、リストのすべての項目が返されるため、大きなリストの場合は、SPListItemCollectionのインデックスでアイテムを取得するのが遅くなることに注意してください。あなたが別のに基づいて、最後と最初の項目を取得したい場合は

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

:あなたは順序を逆にする必要があり、「最後の項目」について

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(); 

:私はCAMLクエリを使用することをお勧めする理由ですあなたはフィールドごとに注文を変更する必要があります。

更新:
さらに良いことにはIDフィールドで注文するだろう。それで、あなたは同じ結果を達成することができました。 @ Kobiが指摘しているように、作成されたフィールドはコードによって変更されている可能性があります。

+1

非常に良い。私もIDを使用することをお勧めします、 "作成された"日付はコードで設定することができます。また、リストが小さい場合、私はクエリを気にしないだろうか分からない。 – Kobi

+0

@Kobi、それは本当です。私の例をIDに変更します... thx。 – Stefan

2

あなたは最後ITEMID

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

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

よろしくを取得するには、これを試すことができます!

+1

私たちがgonaの仕事ではない2つのアイテムを取り除いた場合 – TinTin

+0

これは私にとって素晴らしい仕事でした。ソートされたSPListCollectionに対していくつかの操作を実行する必要がありました。最後にすべての項目を処理する前に、値を指定する必要がありました。これにより、私は余分なCAMLクエリを書くことなくそれを行うことができました。ありがとう! – Chronozoa

+0

削除されたアイテムのIDについて –

関連する問題