2009-09-02 10 views
9

SPListItem.Versionsコレクションを繰り返し処理して、最新の承認済みリストアイテムを見つけようとしています。最新のSPListItemの承認済みバージョンを見つける

私のリストアイテムには3つのバージョンがあります:最初の2つは承認され、最後は草案です。しかし、私のコードでは、彼らはすべてドラフトに入っていると言います!助けてください!

// 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; 
    } 
} 

答えて

9

item.Versions [インデックス] SPListItemVersionインスタンスを返し、SPListItemVersion.ListItem親SPListItemを返します。したがって、あなたのversionedItemはitemと同じオブジェクトを参照することになり、同じバージョンを何度も何度もチェックしています。私はあなたが実際に

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

は、それが働いて、感謝を! 親を得るのはちょっと面倒じゃないですか? SharePointであなたが承認と呼ぶときに私に尋ねると、その用語は混乱してしまいます。リストではModerationを、リストアイテムにはレベルを表します。 –

6

私のコードを確認したいと考えてい

はこのように見てしまった:

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

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

かなりきちんとして、私は本当に顧客に展開するとき、それは動作します願っています!

+3

itemFound = version.ListItemを呼び出します。最新の承認でない可能性のある最新のverionを返します。助けてください –

9

マティアスが推奨する方法を実装した方が最良の方法です。アイテムは最近のものから古いものまで並べられているので、やや面倒ですが効率的です。これは、公開されたバージョンですぐにマッチする可能性が高いことを意味します。

MSDN SPListItemVersionCollection article(特にセバスチャンWojciechowskiの追加)に拡大:

// 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

ありがとう、非常に役立ちます!私のちょっとしたスペルを編集してくれてありがとう! :) –

+0

問題ありません。後でユーザーがあなたの質問を見つけるのを助けるために編集されました。 –

+0

あなたが今ここに含まれるリンクはSharePoint 2013を指し、参照したコミュニティコンテンツは以前のバージョンに添付されています:http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitemversioncollection(v=office) .12).aspx – Chloraphil

関連する問題