среда, 19 января 2011 г.

SharePoint 2010: How to set value to taxonomy list field

В 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();
    }
}
 

Комментариев нет: