SPFileVersionCollection - 为什么版本按混合顺序排序?

时间:2010-02-26 10:16:54

标签: sharepoint version-control document wss-3.0

SPFileVersionCollection和SPListItemVersionCollection版本控制似乎与我不一致。不一致对我来说不是问题,但排序顺序是。

SPListItemVersionCollection

我可以理解ListItems的版本控制,因为它们按降序存储:

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

但是我无法理解如何为文档库项目保存版本号:

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

它们既不是升序,也不是降序,而是混合的东西。

是否有任何理由让SharePoint团队决定存储这样的SPFile版本?他们是否希望我自己编写方法来获取最新版本,或者是否有内置版本?

注意:我要指出文档库项目的SPListItem.File不为空。

1 个答案:

答案 0 :(得分:6)

以为我会在控制台应用程序中输出一些关于SPFileVersionCollection的信息,结果是:

  • 最后一个索引将保持当前(不是 起草但已出版)版本 (SPFileVersion.IsCurrentVersion 属性为TRUE)
  • 0 index保留最旧版本
  • (最后一个索引 - 1)有最后一个草稿版本(例如2.7)和(最后一个索引 - 2)拥有2.6等。
  • SPFile.Versions.Count = 0如果您刚刚上传了全新文档(次要版本,则在发布之前)。
  • 如果您继续上传新文档版本但尚未发布,则会添加到SPFileVersionCollection,但在发布之前,没有任何人将IsCurrentVersion属性设置为true。

啊,我错误地认为最后一个文件草稿版本应该算作最新版本。当然,最后一个PUBLISHED版本是最新的版本!

但是,要注意不一致。