9
votes

Trouver la dernière version approuvée d'un Splistitem

J'essaie de parcourir la collection Splistitem.versions pour trouver le dernier élément de la liste approuvée.

Mon élément de liste a trois versions: les deux premiers sont approuvés, le dernier est dans le projet. Mais mon code dit qu'ils sont tous dans le brouillon! S'il vous plaît aider! xxx


0 commentaires

3 Réponses :


9
votes

item.versions [Index] renvoie une instance Splistitemversion et SplistitemVersion.Listitem renvoie le parent Splistitem. Donc, votre versionEditem se retrouvera par référence à la même objet que l'élément, et vous vérifiez la même version encore et encore.

Je pense que vous voulez réellement vérifier P>

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


1 commentaires

Cela a fonctionné, merci! N'est-ce pas un peu maladroit d'obtenir le parent comme ça? Et les termes sont mélangés si vous me demandez quand dans SharePoint, vous appelez son approbation, je suppose que sur la liste sa modération et sur l'élément de la liste son niveau !?



6
votes

Mon code a fini par écrire comme ceci:

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

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


1 commentaires

Appel d'élément trouvé = item de la version.List; retournera la dernière version qui pourrait ne pas être le dernier approuvé. Il faut se méfier



10
votes

La façon dont Mattias recommande et que vous avez implémentées est la meilleure façon de le faire. C'est un peu maladroit mais toujours efficace, car les articles sont commandés du plus récent au plus ancien. Cela signifie que vous êtes susceptible d'obtenir une correspondance sur la version publiée rapidement.

Développer sur le MSDN SplistitemverionCollection Collection (spécialement Sebastian Wojciechowski): P>

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


5 commentaires

Merci très utile! Et merci d'avoir édité mon orthographe bâclée! :)


Aucun problème. Edité pour aider les utilisateurs à trouver votre question plus tard.


En tant que lien que vous avez inclus maintenant, indique SharePoint 2013 et que le contenu de la communauté que vous avez référencé est joint à la version précédente: msdn.microsoft.com/en-us/library/...


@Chloraphul merci que le lien est fixé maintenant


Cela semble être la solution correcte. J'ai vu de nombreux extraits de code où ils traitent des éléments.versions [item.versions.count - 1] comme la version la plus récente qui est fausse.