2009-09-02 20 views
9

En son onaylanan liste öğesini bulmak için SPListItem.Versions koleksiyonunu yinelemeye çalışıyorum.Bir SPListItem'in en son onaylanmış sürümünü bul

Liste öğemdeki üç sürümü var: ilk ikisi onaylandı, son taslakta. Ama benim kodum hepsi taslakta diyor! Lütfen yardım et!

// Iterate through all versions 
for (int index = 0; index < item.Versions.Count; index++) 
{ 
    SPListItem versionedItem = item.Versions[index].ListItem; 

    // Check if moderation information is set to approved 
    if (versionedItem.ModerationInformation.Status.Equals(SPModerationStatusType.Approved)) 
    { 
     // We found an approved version! 
     itemFound = versionedItem; 
    } 
} 

cevap

9

item.Versions [göstergesi] bir SPListItemVersion örneğini verir ve SPListItemVersion.ListItem üst SPListItem döndürür. Böylece, sürümlü öğeniz öğe ile aynı nesneyi ifade edecek ve aynı sürümü tekrar tekrar kontrol ediyorsunuz.

if (doclist.EnableVersioning) 
{ 
    SPListItemVersionCollection allVersions = item.Versions; 

    // Iterate through all versions 
    foreach (SPListItemVersion version in allVersions) 
    { 
     if (version.Level == SPFileLevel.Published) 
     { 
      itemFound = version.ListItem; 
     } 
    } 
} 

Oldukça düzgün ve gerçekten müşteri konuşlanacak zaman çalışır umut: İnanıyorum

aslında benim kod bu gibi bakarak sona erdi

if (item.Versions[index].Level == SPFileLevel.Published) { 
    // check item.Versions[index].VersionLabel 
} 
+0

İşe yaradı, teşekkür! Ebeveynleri bu şekilde almak biraz garip değil mi? Ve eğer SharePoint'te ne zaman bana bu çağrıyı onayladıysan, listenin Moderasyonunu ve liste maddesini Seviye! –

6

kontrol etmek istiyorum!

+3

Arama öğesiFound = version.ListItem; En Son Onaylanmış olan en son verimi geri döndürecektir. Dikkat! –

9

Mattias'ın önerdiği ve uyguladığınız yol, bunu yapmanın en iyi yoludur. Ürünler en sondan en eskiye doğru sıralandıkça biraz garip ama yine de verimli. Bu, yayınlanan sürümde hemen bir eşleşme elde etmeniz anlamına gelir.

MSDN SPListItemVersionCollection article (özellikle Sebastian WOJCIECHOWSKI en ilaveten) genişletmek:

// Current version of the item (note: this may be a draft) 
SPListItem.Versions[0] 

// Previous version of the item 
SPListItem.Versions[1] 

// First version of the item 
SPListItem.Versions[SPListItem.Versions.Count - 1] 
+0

Teşekkürler, çok yardımcı! Özensiz yazımımı düzenlediğiniz için teşekkürler! :) –

+0

Sorun değil. Kullanıcıların sorunuzu daha sonra bulmasına yardımcı olmak için düzenlenmiştir. –

+0

İçinde bulunduğunuz bağlantı, SharePoint 2013'ü işaret ettiğinden ve başvuruda bulunduğunuz topluluk içeriği önceki sürüme eklenmiştir: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitemversioncollection(v=office .12) .aspx – Chloraphil

İlgili konular