Tuesday 8 May 2012

Create Managed MetaData Service Programmatically

Managed metadata is a hierarchical collection of centrally managed terms that you can define, and then use as attributes for items in Microsoft SharePoint Server 2010.

To create Managed metadata service add one feature receiver and write below code in featureActivate method.

        TaxonomySession oTaxSession;
        TermStore oTermStore;
        Group oTermGroup;
        TermSet oTermSet;
        Term oTerm;
        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {


            SPWeb oSite = properties.Feature.Parent as SPWeb;
            oTaxSession = new TaxonomySession(oSite.Site);
            oTermStore = oTaxSession.DefaultSiteCollectionTermStore;

// or  oTermStore = oTaxSession.TermStores["Name of termstore like "Managed Metadata Service""];
            try
            {
                oTermGroup = oTermStore.Groups["New Group"];
            }
            catch (ArgumentOutOfRangeException ex)
            {
                oTermGroup = oTermStore.CreateGroup("New Group");
                oTermGroup.Description = "New Group Description";
            }

            try
            {
                oTermSet = oTermGroup.TermSets["New TermSet"];
            }
            catch (ArgumentOutOfRangeException ex)
            {
                oTermSet = oTermGroup.CreateTermSet("New TermSet");
                oTermSet.Description = "New TermSet Description";
            }

            try
            {
                oTerm = oTermSet.Terms["New Term"];
            }
            catch (ArgumentOutOfRangeException ex)
            {
                oTerm = oTermSet.CreateTerm("New Term", oTermStore.DefaultLanguage);
                oTerm.SetDescription("New Term Description", oTermStore.DefaultLanguage);
                oTerm.CreateLabel("New Term Label", oTermStore.DefaultLanguage, false);
            }

            oTermStore.CommitAll();     
      }
How to use that managed metadata service programmatically?
I am creating one site column with Managed Metadata type. add this code in above method.


bool fieldExists = oSite.Fields.ContainsField("ManagedTest");

            if (!fieldExists)
            {
                SPContentType contentTypeOfficeDetails = oSite.ContentTypes["MyContaintype"];

                TaxonomyField field = oSite.Fields.CreateNewField("TaxonomyFieldType", "ManagedTest") as TaxonomyField;

                field.SspId = oTermSet.TermStore.Id;

                field.TermSetId = oTermSet.Id;

                field.TargetTemplate = string.Empty;

                field.AllowMultipleValues = true;

                field.CreateValuesInEditForm = true;

                field.Open = true;

                field.AnchorId = Guid.Empty;

                field.Group = "Taxonomy Fields";

                //Add the taxonomy field to site columns

                oSite.Fields.Add(field);

                oSite.Update();

            }

No comments:

Post a Comment