Обновите столбец управляемых метаданных с несколькими значениями, используя CSOM - PullRequest
1 голос
/ 17 февраля 2020

У меня есть следующий код в моем удаленном приемнике событий, чтобы создать новую папку, а затем заполнить поля управляемых метаданных папки значениями текущего элемента (добавленного элемента): -

ListItem listItem = context.Web.GetList(webrelativeurl +  "/"+i2["TemplateListUrl"]).AddItem(listItemCreationInformation);

listItem["FolderType"] = currentitem["FolderType"];
listItem["CorpType"] = currentitem["CorpType"];

теперь FodlerType как для текущего элемента, так и для элемента списка - это столбец управляемых метаданных, который допускает только одно значение, а CorpType допускает несколько значений. Мой код выше назначит значение для FolderType правильно, но вызовет эту ошибку при обновлении CorpType: -

Microsoft.SharePoint.Client.ClientRequestException
HResult = 0x80131500 Сообщение = Объект не связан с идентификатором объекта или идентификатор объекта недействителен. Source = StackTrace:

любой совет?

1 Ответ

0 голосов
/ 18 февраля 2020

Вам необходимо получить TaxonomyFieldValueCollection, используя SetFieldValueByValueCollection объекта TaxonomyField.

var field = item.ParentList.Fields.GetByInternalNameOrTitle("CorpType");
var corpTypeTaxField = context.CastTo<TaxonomyField>(field);
context.Load(item,i=>i[TaxKeywordFieldName]);
var valuesToCopy = corpTypeTaxField.GetFieldValueByValueCollection(currentitem["CorpType"].ToString());
corpTypeTaxField.SetFieldValueByValueCollection(listItem, valuesToCopy);    

Обратите внимание: это усложняет ситуацию, если у вас есть термины, которые вам нужно найти, чтобы создать TaxonomyFieldValueCollection с нуля - копировать его из другого элемента, безусловно, проще.

...