Mar*_*son 9 versioning sharepoint document-library splistitem
我试图遍历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;
}
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*gas 10
Mattias推荐并实施的方式是最好的方法.这有点尴尬,但仍然有效,因为物品从最近到最旧订购.这意味着您可能很快就会对已发布的版本进行匹配.
扩展MSDN SPListItemVersionCollection文章(特别是Sebastian Wojciechowski的补充):
// 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]
Run Code Online (Sandbox Code Playgroud)
小智 9
item.Versions [index]返回SPListItemVersion实例,SPListItemVersion.ListItem返回父SPListItem.因此,你的versionedItem将最终引用与item相同的对象,并且你一遍又一遍地检查相同的版本.
我相信你其实想检查一下
if (item.Versions[index].Level == SPFileLevel.Published) {
// check item.Versions[index].VersionLabel
}
Run Code Online (Sandbox Code Playgroud)
我的代码最终看起来像这样:
if (doclist.EnableVersioning)
{
SPListItemVersionCollection allVersions = item.Versions;
// Iterate through all versions
foreach (SPListItemVersion version in allVersions)
{
if (version.Level == SPFileLevel.Published)
{
itemFound = version.ListItem;
}
}
}
Run Code Online (Sandbox Code Playgroud)
非常整洁,我真的希望它在客户部署时有效!
| 归档时间: |
|
| 查看次数: |
15059 次 |
| 最近记录: |