SharePoint ライブラリ内のドキュメントにメタ データを追加するイベント レシーバーがあります。イベント レシーバーは ItemUpdated で発生し、フィールドに URL を追加することになっています。
次のコードは、ドキュメントを置き換えるときにチェックアウトされたままになるという 1 つの小さな問題を除いて、完全に機能します。
そのため、新しいドキュメントをライブラリに追加すると、イベント レシーバーがメタ データを追加し、ドキュメントがチェックインされます。しかし、同じ名前の新しいドキュメントをアップロードして置換すると、ドキュメントにはメタ データがありませんチェックアウトされます。ドキュメントを手動でチェックインすると、メタデータが追加されます。
これが私のコードです。
SPField projectNameDocField = Methods.GetField(web, sharedDocumentList, Field.projectURLInternal);
SPListItem projectSiteItem = GetProjectSiteItem(web);
SPField projectNameSiteField = Methods.GetField(web.ParentWeb, projectSiteItem.ParentList, Field.projectURLInternal);
if (listItem.File.CheckOutType == SPFile.SPCheckOutType.None)
{
listItem.File.CheckOut();
if (projectSiteItem[projectNameSiteField.Id] != null)
{
SPFieldUrlValue projectNameUrlField = new SPFieldUrlValue();
projectNameUrlField.Description = web.Title;
projectNameUrlField.Url = web.Url;
listItem[projectNameDocField.Id] = projectNameUrlField;
listItem.Update();
SPListItem updatedListItem = sharedDocumentList.GetItemById(listItem.ID);
if (updatedListItem.File.CheckOutType != SPFile.SPCheckOutType.None)
{
updatedListItem.File.CheckIn("Automatisk uppdatering av metataggar", SPCheckinType.MinorCheckIn);
}
}
}
助けてくれてありがとう。