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


Sathish Nadarajan
SharePoint MVP
Published On :   14 Dec 2015
Visit Count
Today :  7    Total :   8284



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.

Categories