SharePoint 2010 リストでバージョン管理とチェックイン/チェックアウトを有効にしており、ビジネス上の理由から、フィールドの情報を更新したいと考えています。すべてのバージョンのフィールド データを同様の方法で所定の場所に上書きして、バージョン番号が変更されるようにします。変わらない。
SPListItemVersion.ListItem.UpdateOverwriteVersion() を呼び出すと、項目に変更を加える前に項目をチェックアウトする必要があることを示して失敗します。理にかなっています。そのため、更新ステートメントの前に SPListItemVersion.ListItem.CheckOut() ステートメントを配置して更新を試みたところ、公開されたバージョンを上書きできないというエラーが表示されました。また、SPSite.AllowUnsafeUpdates = true を使用してチェックアウトの前に試み、更新の呼び出し後に false に戻そうとしましたが、後者のエラーは引き続き発生します。何か案は?
以下の削除されたコード:
foreach (SPListItemVersion itemVersion in item.Versions){
itemVersion.ListItem.File.CheckOut(SPFile.SPCheckOutType.Online, itemVersion.ListItem.File.TimeLastModified.ToString());
site.AllowUnsafeUpdates = true;
itemVersion.ListItem["FieldName"] = "changed value here";
itemVersion.ListItem.UpdateOverwriteVersion();
site.AllowUnsafeUpdates = false;
itemVersion.ListItem.File.CheckIn("Updated list item version", SPCheckinType.OverwriteCheckIn);
}