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)
SP文件版本集合
但是我无法理解如何保存文档库项目的版本号:
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 不为 null。
我想我会在控制台应用程序中输出一些有关 SPFileVersionCollection 的信息,结果是:
- 最后一个索引将保存当前索引(不是
起草但已发布)版本
(SPFileVersion.IsCurrentVersion
属性对此是正确的)
- 0 索引保存最旧的版本
- (最后索引 - 1)具有最后起草的版本(例如 2.7),(最后索引 - 2)包含 2.6 等。
- 如果您刚刚上传了全新文档(次要版本,发布前),则 SPFile.Versions.Count = 0。
- 如果您继续上传新文档版本但尚未发布版本,它们将添加到 SPFileVersionCollection,但在您发布版本之前,没有一个版本的 IsCurrentVersion 属性设置为 true。
啊,我有一个错误的假设,即最后一个文档草稿版本应该算作最新版本。当然,最后发布的版本是最新的!
不过,请注意不一致。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)