В SharePoint 2010 появился интересный сервис - Managed metadata, который позволяет создавать целые иерархии метаданных, централизовано ими управлять и использовать на всей ферме.
Мне понадобилось устанавливать значения для таких полей через код.
Для работы необходим reference на 'Microsoft.SharePoint.Taxonomy.dll' и namespace Microsoft.SharePoint.Taxonomy
Пример того как из существующей в листе колонки "MyTerm" получить определение "termName" и установить его в качестве значения колонки
var url = "http://server/Lists/TaxList";
using (var site = new SPSite(url))
{
using (var web = site.OpenWeb())
{
var lst = web.GetList(url);
var item = lst.Items.Add();
item[SPBuiltInFieldId.Title] = "super title";
var taxfld = lst.Fields["MyTerm"] as TaxonomyField;
var tSes = new TaxonomySession(site);
var tStore = tSes.TermStores[taxfld.SspId];
var tSet = tStore.GetTermSet(taxfld.TermSetId);
var tCol = tSet.GetTerms("termName", true);
if (tCol.Count > 0)
{
var term = tCol[0];
var tv = new TaxonomyFieldValue(taxfld);
taxfld.SetFieldValue(item, term);
}
item.Update();
}
}
using (var site = new SPSite(url))
{
using (var web = site.OpenWeb())
{
var lst = web.GetList(url);
var item = lst.Items.Add();
item[SPBuiltInFieldId.Title] = "super title";
var taxfld = lst.Fields["MyTerm"] as TaxonomyField;
var tSes = new TaxonomySession(site);
var tStore = tSes.TermStores[taxfld.SspId];
var tSet = tStore.GetTermSet(taxfld.TermSetId);
var tCol = tSet.GetTerms("termName", true);
if (tCol.Count > 0)
{
var term = tCol[0];
var tv = new TaxonomyFieldValue(taxfld);
taxfld.SetFieldValue(item, term);
}
item.Update();
}
}
Комментариев нет:
Отправка комментария