This topic has not yet been rated - Rate this topic

TaxonomyWebTaggingControl Class

SharePoint 2010

Represents a generic Web control for picking managed metadata terms.

System.Object
  System.Web.UI.Control
    System.Web.UI.WebControls.WebControl
      Microsoft.SharePoint.Taxonomy.TaxonomyWebTaggingControl

Namespace:  Microsoft.SharePoint.Taxonomy
Assembly:  Microsoft.SharePoint.Taxonomy (in Microsoft.SharePoint.Taxonomy.dll)
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel = true)]
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel = true)]
public sealed class TaxonomyWebTaggingControl : WebControl

A TaxonomyWebTaggingControl object is a Web control that can be added to a page so that a user can pick one or more taxonomy Term object from a specific TermSet object or from an entire TermStore object.

This control ensures that all terms are valid, and if they are not, it requires validation from the user when it finds an invalid term. If the TermStore or TermSet connection cannot be established, the TaxonomyWebTaggingControl will be disabled.

using System;
using System.IO;
using System.Globalization;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Taxonomy;

namespace Microsoft.SDK.SharePointServer.Samples 
{
    public class TestTaxonomyWebTaggingControl : System.Web.UI.Page
    {
        // In order to place the TaxonomyWebTaggingControl on an aspx page use the following declaration:
        // <Taxonomy:TaxonomyWebTaggingControl id="myTaxonomyControl" runat="server" />
        protected TaxonomyWebTaggingControl myTaxonomyControl;

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            if (IsPostBack)
            {
                // since this is a PostBack we want to validate
                string errorMessage = string.Empty;
                if (myTaxonomyControl.Validate(out errorMessage))
                {
                    string value = myTaxonomyControl.Text;
                    // now do what you want with the value returned from the control.
                }
                else
                {
                    // The data was not valid so you need to inform the user
                    throw new Exception("The data entered was not valid");
                }
            }
            else
            {
                TaxonomySession taxonomySession = new TaxonomySession(SPContext.Current.Site);

                // This code assumes you have a term store and term set set up already (we are just taking the first one
                myTaxonomyControl.SSPList = taxonomySession.TermStores[0].Id.ToString();
                myTaxonomyControl.TermSetList = taxonomySession.TermStores[0].Groups[0].TermSets[0].Id.ToString();
                myTaxonomyControl.GroupId = taxonomySession.TermStores[0].Groups[0].Id;
                // This controls whether you can add new terms to the term set
                myTaxonomyControl.AllowFillIn = false;
                // This controls whether we use an anchor term or not (by setting it to Empty we are explicitly choosing
                // not to)
                myTaxonomyControl.AnchorId = Guid.Empty;
                // Since we are bound to a specific term set and not spanning term sets the following property really does nothing
                myTaxonomyControl.ExcludeKeyword = false;
                // This controls whether unresolved terms will just be added to the termset or not
                myTaxonomyControl.IsAddTerms = false;
                // This setting allows you to browse the term set
                myTaxonomyControl.IsDisplayPickerButton = true;
                // This setting enables/disables validation highlighting
                myTaxonomyControl.IsIgnoreFormatting = false;
                myTaxonomyControl.IsIncludeDeprecated = false;
                myTaxonomyControl.IsIncludeUnavailable = false;
                // This setting modifies what is stored/returned from the control, if you want the GUIDS of parent terms
                // then set this to true
                myTaxonomyControl.IsIncludePathData = false;
                // This setting will include term set name resolution as well if set
                myTaxonomyControl.IsIncludeTermSetName = false;
                // This allows or disallows multiple values to be selected
                myTaxonomyControl.IsMulti = false;
                // We are searching on a specific termset so set these to false
                myTaxonomyControl.IsSpanTermSets = false;
                myTaxonomyControl.IsSpanTermStores = false;
                myTaxonomyControl.IsUseCommaAsDelimiter = false;
                // This is the LCID of the language to resolve terms against
                myTaxonomyControl.Language = taxonomySession.TermStores[0].DefaultLanguage;

                // This has a default value, however, if you want to customize what web service it uses you can
                // change the URL.
                myTaxonomyControl.WebServiceUrl = new Uri(SPContext.Current.Web.Url + "/_vti_bin/TaxonomyInternalService.json");

                myTaxonomyControl.SetCannotBeBlankErrorMessage("This control should not be blank");

                // If you want to modify the width/height of the control you will need to use the WidthCss/HeightCss 
                // properties and set them to a css class that defines the width/height properties.  The code would
                // be:
                // myTaxonomyControl.WidthCss = "my-css-class";
                // myTaxonomyControl.HeightCss = "my-css-class";
            }

        }
    }
}

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
PostBack Event for TaxonomyWebTaggingControl
Is there any postback event for this control to handle on the server side upon value selection?
I see validate method which can be used to validate the term upon some button click.

I would like to know is there any event with which I can do some additional processing, some sort of autopostback.
Great Article with all the information needed
The code above is everything what is needed to embed to own controls there is no need to workaround. Great article in here helped me a lot with all what you must know this controls great implemented control.
Build your own user interface components using the taxonomy controls

If you would like to use managed metadata controls in your own interface elements I suggest you to read this post:
http://pholpar.wordpress.com/2010/02/15/build-your-own-user-interface-components-using-the-taxonomy-controls/