How to Insert Update Taxonomy Fields (Multi Value) in SharePoint 2013 Programmatically

Sathish Nadarajan
 
Solution Architect
December 14, 2015
 
Rate this article
 
Views
16870

In the earlier articles, we saw many interesting facts about the Taxonomy Fields. In this article, let us see how to Insert, Update Taxonomy Field Programmatically using C#.

There are two types we need to consider. One is single value Taxonomy Field and the other is Multi Value Taxonomy Field.

Let us see how to insert a Single Value Taxonomy Field.

 SPListItem navigationListItem = navigationList.Items.Add();
 
                     SPField spfldTerm = navigationListItem.Fields.TryGetFieldByStaticName(<<StaticName of the Taxonomy Field>>);
                     TaxonomyField txfldTerm = (TaxonomyField)spfldTerm;
 
                     TaxonomyFieldValue taxonomyValue = new TaxonomyFieldValue(txfldTerm);
                     taxonomyValue.TermGuid = <<Term GUID>>.ToString();
                     taxonomyValue.Label = <<Term Name>>.Name;
 
                     navigationListItem[txfldTerm.Id] = taxonomyValue;
                     navigationListItem[txfldTerm.TextField] = taxonomyValue;
 

On the above code snippet, the Term GUID and Term Name will be the ID and Name of the Term.

Now, let us see how to insert a Multi Value Taxonomy Field. There is no much difference between insert and updating the Taxonomy field.

The Insert of Multi Value Taxonomy Field is as follows.

 for(int i=0; $i < arrayCount; $i++)
          {
 
             TaxonomyFieldValue GeoTagSecondaryFieldValue = new Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue(GeoTagSecondaryField)
             GeoTagSecondaryFieldValue.TermGuid = array[$i]
             GeoTagSecondaryFieldValue.Label = array[$i]
 
             GeoTagSecondaryFieldValueCollection.Add($GeoTagSecondaryFieldValue)
 
          }
         GeoTagSecondaryField.SetFieldValue(newItem, GeoTagSecondaryFieldValueCollection) ;
 

The same can be done using the PowerShell as well.

 #Single Value :
 $newItem = $list.Items.Add()
 
         $BookShelvesField = [Microsoft.SharePoint.Taxonomy.TaxonomyField]$newItem.Fields["BookShelf"]
         $BookShelvesFieldValue = new-object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue($BookShelvesField)
         $BookShelvesFieldValue.TermGuid = $_.BookShelveTermGUID
         $BookShelvesFieldValue.Label = $_.BookShelveTermLabel
         $BookShelvesField.SetFieldValue($newItem, $BookShelvesFieldValue) 
 
 
 #And the Multi Value is like
 $GeoTagSecondaryCount = $GeoTagSecondaryTermIDArray.Length
 
           
   
          for($i=0; $i -lt $GeoTagSecondaryCount; $i++)
          {
             write-host $GeoTagSecondaryTermIDArray[$i]
 
             $GeoTagSecondaryFieldValue = new-object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue($GeoTagSecondaryField)
             $GeoTagSecondaryFieldValue.TermGuid = $GeoTagSecondaryTermIDArray[$i]
             $GeoTagSecondaryFieldValue.Label = $GeoTagSecondaryTermLabelArray[$i]
 
             $GeoTagSecondaryFieldValueCollection.Add($GeoTagSecondaryFieldValue)
 
          }
         $GeoTagSecondaryField.SetFieldValue($newItem, $GeoTagSecondaryFieldValueCollection)
 
         $newItem.Update() 
 
 

Happy Coding,

Sathish Nadarajan.

Author Info

Sathish Nadarajan
 
Solution Architect
 
Rate this article
 
Sathish is a Microsoft MVP for SharePoint (Office Servers and Services) having 15+ years of experience in Microsoft Technologies. He holds a Masters Degree in Computer Aided Design and Business ...read more
 

Leave a comment