查找SPListItem的最新批准
-
21-09-2019 - |
题
我想通过SPListItem.Versions集合迭代找到最新批准列表项。
我的列表项有三个版本:前两个被批准,最后是在草案。但我的代码说,他们都是在草案!请帮助!
// 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;
}
}
解决方案
item.Versions [指数]返回一个SPListItemVersion实例,SPListItemVersion.ListItem返回父SPListItem。所以,你的versionedItem将结束指的同一对象的项目,你一遍又一遍检查相同的版本。
我相信你真的要检查
if (item.Versions[index].Level == SPFileLevel.Published) {
// check item.Versions[index].VersionLabel
}
其他提示
马蒂亚斯建议的方式,你已经实现是做到这一点的最好办法。这是一个有点尴尬,但仍然有效,因为项目是有序的,从最新到最旧。这意味着你很可能很快得到的发行版匹配。
展开在 MSDN SPListItemVersionCollection文章(具体塞巴斯蒂安沃伊切霍夫斯基的加法):
// 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]
我的代码最终看上去是这样的:
if (doclist.EnableVersioning)
{
SPListItemVersionCollection allVersions = item.Versions;
// Iterate through all versions
foreach (SPListItemVersion version in allVersions)
{
if (version.Level == SPFileLevel.Published)
{
itemFound = version.ListItem;
}
}
}
整齐漂亮,我真的很希望当客户部署它的作品!
不隶属于 StackOverflow