Skip to main content

Programmatically Setting Taxonomy Field Values

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.taxonomy.taxonomyfield.aspx



static void Main(string[] args)
{
    var url = ConfigurationManager.AppSettings["Url"].ToString();
    var library = ConfigurationManager.AppSettings["Library"].ToString();

    // Reads XML, considering
    // (key => lookup field,value => taxonomy field)
    Dictionary<string, string> mappingFields = XMLHelper.ReadDictionaryXML("MappingFields.xml");

    using (SPSite site = new SPSite(url))
    {
        using (SPWeb web = site.RootWeb)
        {
            // Gets the list/library
            SPList list = web.Lists[library];

            foreach (SPListItem item in list.Items)
            {
                // Iterates through all mapped fields
                foreach (var mappedField in mappingFields)
                {
                    if (item.Fields.ContainsField(mappedField.Key))
                    {
                        // Allows updates without a trace
                        web.Site.AllowUnsafeUpdates = true;

                        // Gets the lookup field instance
                        var lookupValueList = (item[mappedField.Key] as SPFieldLookupValueCollection).ToList();

                        // Gets the taxonomy field instance
                        TaxonomyField managedField = item[mappedField.Value] as TaxonomyField;

                        // Gets the current taxonomy session
                        TaxonomySession session = new TaxonomySession(web.Site, false);

                        // Gets the term store (by SspId)
                        var termStoreCol = session.TermStores[managedField.SspId];

                        // Gets the terms of a specific term set (by TermSetId)
                        var termCol = termStoreCol.GetTermSet(managedField.TermSetId).Terms;

                        var listTerms = new List<Term>();

                        // Iterates through the lookup values
                        foreach (var itemValue in lookupValueList)
                        {
                            string value = itemValue.LookupValue;

                            // Gets the correspondent term for the each value
                            // found in the lookup values list
                            var termToSet = termCol[value];

                            listTerms.Add(termToSet);
                        }

                        // Sets the field value using the list of terms
                        managedField.SetFieldValue(item, listTerms);

                        // Persists the item
                        item.SystemUpdate();

                        // Denies further unsafe updates
                        web.Site.AllowUnsafeUpdates = false;
                    }
                }
            }
        }
    }
}




Comments

  1. where are you getting your XMLHelper class from?

    ReplyDelete

Post a Comment

Popular posts from this blog

Site Logo Not Changing on Web Part Pages

I tested and reproduced your issue in my local machine. Since the Web Part Pages would override the content in PlaceHolderPageTitleInTitleArea place holder, the site logo would not change automatically. So would you please try remove or comment the following control TitleBarWebPart: See the similar scenario and solution: http://emanonsolutions.blogspot.com/2010/02/left-navigation-webpart-pages.html Hope this can help.

Create a Custom Site Definition with Additional Content in SharePoint 2010 Using Visual Studio 2010

·          Web Templates ·          Site Definitions and Configurations ·          Deciding Between Custom Web Templates and Custom Site Definitions ·          Understanding Onet.xml Files ·          How to: Create a Custom Web Template ·          Overview of Creating Custom Site Definitions Site Template Configurator utility http://stefan-stanev-sharepoint-blog.blogspot.com/search/label/SharePoint%202010 Create a Custom Site Definition with Additional Content in SharePoint 2010 Using Visual Studio 2010 http://community.bamboosolutions.com/blogs/sharepoint-2010/archive/2010/11/11/sharepoint-2010-cookbook-how-to-create-a-custom-site-definition-with-additional-content-in-sharepoint-2010-using-visual-studio-2010.aspx http://blogs.msdn.com/b/allenwang/...

SharePoint 2010 Branding

Real World Branding with SharePoint 2010 Publishing Sites http://msdn.microsoft.com/en-us/library/gg430141.aspx#Y13640 The most important source of information is the  SDK . I can’t stress that enough. There is so much more documentation with this release than there was with 2007. However, we are all in the habit of looking to each other for information first. Researching the SDK and walking through the Development classes, even if you aren’t a developer. is an important step in understanding the complex relationships between the objects in SharePoint and ASP.NET. Planning Strategy and Design Visual Design SharePoint 2010 Layered Photoshop File!  – Erik Swenson Universal Usability Guidelines The Pursuit of Interface Design Simplicity  -Luke Wroblewski Visible Narratives: Understanding Visual Organization  -Luke Wroblewski Common Visual Design Misconceptions  – Luke Wroblewski Usability 20 Do’s and Don’ts of Effective Web Design Introduction to Good Usab...