1

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);
}
4

1 に答える 1

0

この問題に直面している可能性がある人には、AllowUnsafeUpdates フィールドを切り替える必要はありません。私にとってうまくいったのは、itemVersion.ListItem.UpdateOverwriteVersion()ステートメントをに置き換えることitemVersion.ListItem.SystemUpdate(false)です。渡されたパラメーターは、更新時に新しいバージョンを作成しないように SharePoint に指示します。

編集:この回答は、現在のアイテムを再度更新するだけです。SPListItemVersion フィールドの参照は、 a を介してgetのみ使用できます。これはオブジェクト モデルでは不可能なようです。

于 2013-01-28T14:05:39.333 に答える