2012-01-04 8 views
7

Chcę zdarzenie pageLoad przejść do dwóch różnych list SharePoint i uzyskać pierwszy ListItem z jednej listy i ostatni ListItem w innym. Nie znam żadnego identyfikatora ListItem, więc myślę, że należy to zrobić za pomocą indeksu list - tylko nie wiem, jak to zaimplementować. Posiadając uchwyt na liście, czy ktoś może doradzić (używając C#) najlepszy sposób na zdobycie pierwszego i ostatniego elementu scenariusza opisanego powyżej?Pierwsze i ostatnie ListItem w liście Sharepoint

Odpowiedz

14

Warunek "pierwszy element" i "ostatni element" nie jest zbyt jasny. Zakładając, że chcesz odzyskać pierwszy i najnowszy element utworzony. Ważne jest, aby pamiętać, że pobieranie pozycji za pośrednictwem indeksu SPListItemCollection może być powolne w przypadku dużych list, ponieważ dostęp do SPList.Items powoduje zwrócenie wszystkich elementów listy. Dlatego proponuję przy użyciu kwerendy 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(); 

Dla „ostatniej pozycji” trzeba odwrócić kolejność:

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

Jeśli chcesz dostać ostatni i pierwszy element na podstawie innego warunkiem, że musisz zmienić kolejność według pól.

Aktualizacja:
Jeszcze lepiej byłoby zamówić przez pole ID. Dzięki temu możesz osiągnąć ten sam rezultat. Nie tylko lepiej, utworzone pole mogło zostać zmienione za pomocą kodu wskazanego przez @Kobi.

+1

Bardzo ładne. Polecam również użycie identyfikatora, "stworzoną" datę można ustawić za pomocą kodu. Ponadto, jeśli listy są małe, nie jestem pewien, czy zawracam sobie głowę zapytaniem. – Kobi

+0

@Kobi, to prawda. Zmienię mój przykład na ID ... thx. – Stefan

2

Można spróbować dostać ostatnią ItemID

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

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

Pozdrowienia!

+1

jeśli usunęliśmy dwa przedmioty, to nie działa – TinTin

+0

To zadziałało dla mnie świetnie. Musiałem wykonać pewne operacje na posortowanym pakiecie SPListCollection i potrzebowałem wartości z ostatniego elementu, zanim przejrzałem je wszystkie. Pozwoliło mi to zrobić bez pisania dodatkowej kwerendy CAML. Dzięki! – Chronozoa

+0

Jak o usuniętych identyfikatorach przedmiotów ??! –

Powiązane problemy