SPListItem.UpdateOverwriteVersion创建次要版本?

时间:2012-02-19 08:21:32

标签: sharepoint

在启用了次要版本的文档库中,UpdateOverwriteVersion()会创建次要版本。

线程 - http://social.technet.microsoft.com/Forums/en-US/sharepointgeneral/thread/e0d1af63-3705-4b58-95c5-f0f92f86a23f - 解释了类似的问题,并提出解决方案作为关闭次要版本控制,更新项目并打开次要版本控制。

但是,我无法暂时关闭次要版本控制设置,因为其他用户可能正在使用相同的库来上传/更改其文档,关闭设置可能会影响其操作。

还有其他解决方案吗?

谢谢和问候,

Arjabh

3 个答案:

答案 0 :(得分:1)

If the goal is to update the fields without creating multiple versions see the code:

Microsoft.SharePoint.Client.File lp_newFile = lp_web.GetFileByServerRelativeUrl(lp_uri.LocalPath);
lp_context.Load(lp_newFile);
lp_context.ExecuteQuery();

//check out to make sure not to create multiple versions
lp_newFile.CheckOut();

ListItem lp_item = lp_newFile.ListItemAllFields;
listItem["Created"] = info.SourceFile.CreationTime;
listItem["Modified"] = info.SourceFile.LastWriteTime;
listItem.Update();

// use OverwriteCheckIn type to make sure not to create multiple versions 
lp_newFile.CheckIn(string.Empty, CheckinType.OverwriteCheckIn);

答案 1 :(得分:1)

尝试listItem.SystemUpdate(false)而不是listItem.UpdateOverwriteVersion()

答案 2 :(得分:0)

使用这样的东西(对我有用):

//Disable minor versions on your list or library, if your item is in a major version (maybe use a file.Publish before)
list.EnableMinorVersions = false;
list.Update();

//Update item and overwrite your major version
ListItem lp_item = lp_newFile.ListItemAllFields;
lp_item["Created"] = info.SourceFile.CreationTime;
lp_item["Modified"] = info.SourceFile.LastWriteTime;
lp_item.UpdateOverwriteVersion();

//Enable minor versions
list.EnableMinorVersions = true;
list.Update();