В SharePoint Online у меня возникают проблемы с установкой значения столбца по умолчанию для управляемого метаданных с использованием CSOM (C#). Для краткости я не включил обработку исключений в свой код. Вот что у меня есть:SharePoint Online CSOM Site Column Значение по умолчанию
// Code snippet for what I'm trying to achieve
using (ClientContext ctx = NewCtx(SiteInfo.Url)) // NewCtx is just a static member I use to return a ClientContext object
{
Field taxColumn = (Field)ctx.Web.Fields.GetByTitle("myMMColumnName");
ctx.Load(taxColumn);
ctx.ExecuteQuery();
TaxonomyFieldValue termField = new TaxonomyFieldValue();
termField.Label = "My MM Term";
termField.TermGuid = "b269aef7-6f47-4b02-bf80-7edfb7166a30";
termField.WssId = -1;
taxColumn.DefaultValue = value;
// Place holder for added code (see below)
taxColumn.Update();
ctx.Load(taxColumn);
ctx.ExecuteQuery();
}
Значение отображается в пользовательском интерфейсе в разделе Столбцы сайта, но не связанный элемент не создается в TaxonomyHiddenList, что имеет смысл, потому что установка подстановок WssId на «-1» не решает и поэтому значение по умолчанию не имеет поиска и выглядит пустым в столбце списка и библиотеки.
Самое близкое разрешение, которое я нашел, - статья (хотя и не связанная с CSOM и связанная ниже) предложила создать элемент списка «фиктивный» (против списка, который потреблял столбец ММ). Это вызовет создание элемента в журнале TaxonomyHiddenList, но в статье предлагается не совершать создание «фиктивного» элемента. Я тоже пробовал это, но, похоже, не имеет никакого эффекта. Это код, я добавил к держателю места, указанного в предыдущем блоке кода:
List myList = ctx.Web.Lists.GetByTitle("My List");
ctx.Load(myList);
ctx.ExecuteQuery();
TaxonomyField taxField = ctx.CastTo<TaxonomyField>(myList.Fields.GetByTitle("myMMColumnName"));
ListItemCreationInformation newItemInfo = new ListItemCreationInformation();
ListItem newItem = myList.AddItem(newItemInfo);
newItem["myMMColumnName"] = termField;
taxField.SetFieldValueByValue(newItem, termField);
В статье использует метод .SetFieldValue, который не доступен в CSOM так что, возможно, хорошо предположить, что неправильно .SetFieldValueByValue является сопоставимыми.
Спасибо за чтение!
Ссылки: Статья - http://sharepointificate.blogspot.com/2014/04/setting-managed-metadata-column-default.html
Привет Вадим. Это отличный ответ, и спасибо за то, что вы также объяснили, чего мне не хватает. Теперь я могу увидеть связанный элемент в TaxonomyHiddenList, и столбцы сайта выглядят отлично, однако, когда я создаю новый элемент в списке, который наследует столбец сайта, значение по умолчанию остается пустым. Нужно ли мне это реализовать против списков/библиотек? – feganmeister
Возможно, вам нужно заменить метод 'Update' на' UpdateAndPushChanges'. Для получения более подробной информации следуйте обновленному ответу (раздел «Обновление») –
Фантастический, все работает в надежде! Спасибо Вадим = D – feganmeister