2010-02-26 11 views
9

Les versions SPFileVersionCollection et SPListItemVersionCollection semblent incohérentes pour moi. Incohérence ne serait pas un problème pour moi, mais l'ordre de tri est.SPFileVersionCollection - pourquoi les versions sont triées dans un ordre mélangé?

SPListItemVersionCollection

Je peux comprendre versionnage de ListItems comme ils sont stockés dans l'ordre décroissant:

SPContext.Current.ListItem.Versions.Count -> 5 
SPContext.Current.ListItem.Versions[0].VersionId -> 1026 (2.2 latest version) 
SPContext.Current.ListItem.Versions[1].VersionId -> 1025 (2.1) 
SPContext.Current.ListItem.Versions[2].VersionId -> 1024 (2.0) 
...        [4].VersionId ->  (oldest version) 

SPFileVersionCollection

Cependant, je ne peux pas comprendre comment les numéros de version sont enregistrés pour une bibliothèque de documents article:

SPContext.Current.ListItem.File.Versions.Count -> 4 
SPContext.Current.ListItem.File.Versions[0].ID -> 512 (1.0 oldest one) 
SPContext.Current.ListItem.File.Versions[1].ID -> 513 (1.1) 
SPContext.Current.ListItem.File.Versions[2].ID -> 1025 (2.1 latest version) 
SPContext.Current.ListItem.File.Versions[3].ID -> 1024 (2.0 (EDIT: IsCurrentVersion = True)) 

Ils ne sont ni dans l'ordre ascendant, ni descendant, mais quelque chose de mélangé.

Y at-il une raison pour que l'équipe SharePoint décide de stocker des versions de SPFile comme ça? Et est-ce qu'ils s'attendent à ce que j'écrive ma propre méthode pour obtenir la dernière version ou y en at-il une intégrée? Une remarque: Permettez-moi de souligner que SPListItem.File n'est pas null pour les éléments de la bibliothèque de documents.

Répondre

6

Je pensais que je génèrerait quelques informations sur SPFileVersionCollection dans l'application de la console et il se trouve que:

  • dernier indice tiendra le courant (non mais publié rédigé) Version (SPFileVersion.IsCurrentVersion propriété est TRUE pour cela)
  • 0 index contient la version la plus ancienne
  • (dernier indice - 1) a la dernière version élaborée (par exemple 2.7) et (dernier indice - 2) détient 2,6 etc.
  • SPFile.Versions.Count = 0 si vous venez de télécharger un nouveau document (version mineure, avant publication).
  • Si vous continuez à télécharger de nouvelles versions de document et n'en avez pas encore publié, elles s'ajoutent à SPFileVersionCollection, mais aucune n'a la propriété IsCurrentVersion définie sur true tant que vous n'en avez pas publié une.

Ahh, j'avais une fausse hypothèse qu'une dernière version de document doit compter comme la dernière version. Bien sûr, la dernière version éditée est la dernière!

Encore, méfiez-vous de l'incohérence.

+0

vos deux derniers points points me semblent contradictoires - si 'Count' est 0 jusqu'à ce que l'un soit publié, comment peuvent-ils être ajoutés à' SPFileVersionCollection'? – Nacht

+0

@Nacht merci pour le commentaire. Longtemps depuis que cela a été testé, trop paresseux pour aller sur SharePoint pour s'assurer, mais [cette réponse] (http://social.msdn.microsoft.com/Forums/sharepoint/en-US/24486a73-bfe0-4ed9- bf6f-32b416cbaf16/quelle-est-la-relation-entre-spfileversions-et-splistitemversions) pourrait faire la lumière: "' SPListItem.Versions.Count' est toujours 1 de plus que 'SPFile.Versions.Count'. SPFile' considère la dernière version comme la version actuelle et ne l'inclut donc pas dans sa collection de versions " –