2012-01-04 18 views
7

Bir 10 olayında, iki farklı SharePoint Listesi'ne gidip bir listeden ilk ListItem ve bir başka listeden son ListItem'i almak istiyorum. ListItem ID'lerinden hiçbirini bilmiyorum, bu yüzden bu listenin endeksle yapılması gerekiyor - bunu nasıl yapacağınızdan emin değilim. Listede bir tanıtıcıya sahip olmak, biri yukarıda özetlenen senaryo için ilk ve son öğeleri almanın en iyi yolunu (C# kullanarak) tavsiye edebilir mi?İlk & Son Liste'yi Sharepoint List içinde alın

cevap

14

"İlk öğe" ve "son öğe" durumu çok açık değil. İlk ve en son öğesinin öğeyi oluşturduğunu varsayarsak. Dikkat edilmesi gereken önemli nokta, SPList.Items erişiminin listenin tüm öğelerini döndürdüğünden, öğelerin SPListItemCollection dizini aracılığıyla alınmasının büyük listeler için yavaş olabileceğidir. Başka dayanan son ve ilk öğeyi almak istiyorsanız

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

: Eğer sipariş ters zorunda "son öğe" için

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

: Bir CAML sorgu kullanarak öneririz yüzden Durum sadece siparişi alana göre değiştirmeniz gerekiyor.

Güncelleme:
Daha da iyisi ID alana göre sipariş etmek olacaktır. Bununla aynı sonucu elde edebilirsin. Sadece daha iyi değil, yaratılan alan @Kobi tarafından belirtildiği gibi kod aracılığıyla değiştirilebilir.

+1

Çok güzel. Ayrıca ID'yi kullanmanızı tavsiye ederim, "oluşturulan" tarih koduyla ayarlanabilir. Ayrıca, listeler küçükse, sorgu ile uğraşacağından emin değilim. – Kobi

+0

@Kobi, bu doğru. Örneğimi ID ... thx olarak değiştireceğim. – Stefan

2

Geçen ItemID

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

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

Selamlar olsun bu deneyebilirsiniz!

+1

Eğer iki öğeyi kaldırırsak işe yaramıyor – TinTin

+0

Bu benim için harika çalıştı. Sıralı bir SPListCollection üzerinde bazı işlemleri gerçekleştirmem gerekiyordu ve hepsine basmadan önce son öğeden bir değere ihtiyacım vardı. Bu bana ekstra bir CAML sorgusu yazmadan yapmamı sağladı. Teşekkürler! – Chronozoa

+0

Kaldırılan Öğeler Hakkında Nasıl? –