ドキュメント ライブラリ (オンプレミスの SharePoint 2016) にドキュメントを追加し、メタデータを更新する必要があります。ドキュメントを追加し、複数選択フィールドを正常に更新するコードをまとめましたが、SharePoint が SQL データベースから受け取る外部データ フィールドを更新する必要があります。これは可能ですか?
私の更新コードは次のようになります。
public class MetaData
{
public string Field { get; set; }
public string Value { get; set; }
}
private static bool UpdateDocument(string fileName, List<MetaData> metadata)
{
bool _result = false;
// Create context
using (SP.ClientContext _context = new SP.ClientContext(_url))
{
// Get library
SP.List _library = _context.Web.Lists.GetByTitle(_libraryName);
// Get root folder of library
SP.Folder _rootFolder = _library.RootFolder;
// Load data
_context.Load(_rootFolder);
_context.ExecuteQuery();
// Caculate file url
string fileUrl = string.Format("{0}/{1}", _rootFolder.ServerRelativeUrl, fileName);
SP.File _file = _context.Web.GetFileByServerRelativeUrl(fileUrl);
_context.Load(_file);
_context.ExecuteQuery();
SP.ListItem _item = _file.ListItemAllFields;
_context.Load(_item);
_context.ExecuteQuery();
foreach (MetaData _mdata in metadata)
{
SP.Field _field = _library.Fields.GetByTitle(_mdata.Field);
_context.Load(_field);
_context.ExecuteQuery();
_item[_field.InternalName] = _mdata.Value;
_item.Update();
_context.ExecuteQuery();
}
_result = true;
}
return _result;
}
参考: 更新する必要があるフィールドは「クライアント」と呼ばれます
フィールド自体を設定することはできますが、もちろん、値は表示されますが、実際には「そこ」にあるわけではありません。SharePoint を実行しているマシンからそれを行う方法に関するいくつかの投稿を読みましたが、クライアントからそれを行う方法が必要です。