Comments (17)

  1. Mike S. says:

    OMG…this and the codeplex project are awesome!  It has so many of the things my company was hoping for with apps (we have prohibited customizations in SharePoint thus far).  I noticed you used Office 365 in the video…does this work with SharePoint in our data centers?


  2. Hey Mike. Glad you like this and the OfficeAMS project. Almost all of the samples work for on-premises and online SharePoint. The documentation that accompanies each sample will usually say if it is specific to one. The taxonomy picker outlined above works with both.

    If you plan to do apps on-premises, I highly recommend familiarizing yourself with the link below. Apps on-premises will typically be configured to do OAuth with certificated instead of Azure ACS that SharePoint Online uses. The link below describes how to set this up:…/fp179901(v=office.15).aspx


  3. chaitanya says:

    The above control i used in a sharepoint hosted app for office-365 site. There is a problem i.e. when the taxonomy dialog is opened, user will select some terms, but if the user wants to remove any of the selected taxonomies, the textbox is not editable. In the inbuilt control that comes with editable and auto fill options without allowing duplicates. But this control is allowing duplicate entries also. Please suggest.

  4. Brandon Johnson says:

    Excellent work I appreciate this resource as it has helped me greatly.

  5. Nanddeep Nachan says:

    Hi Richard, Nice article.

    Is there any way for Setting Taxonomy Picker Value from Client side?

  6. Matt Williams says:


    You have to set the value taxPickerKeywords to be the term you want as default.

    The value needs to be formatted like this:

    [{"Id":"term giud", "Name":"term name" }]

  7. Aleksi N says:

    I'm trying to use the taxonomy picker on a high trust app but keep getting "Loading TermSet failed" alert. Debugging revealed that the underlying error is "Your domain doesn't match the expected domain for this app deployment.". The app is deployed at https://[machinename]:9999 on a local IIS. This is obviously not the same domain as the appweb. How can I make this work?

  8. sabira says:

    how to set the selected terms using managed CSOM ?

  9. dinsh says:

    this control is loading from termset, but i need to load it from some inner term(stat from inchorid)

  10. arun says:

    It's nice taxonomy control.

    I am wondering is there any way to select the term from suggestions using keyboard.

    I am not able to pick up suggested term without mouse.


  11. arun says:

    Its nice taxonomy control post.

    I am wondering is there any way to select the term from suggestions using keyboard.

    I am not able to pick up suggested term without mouse.


  12. Swapna Thomas says:

    Getting "Loading TermSet failed" alert, access denied for AppWebProxy.aspx The app is deployed at https://[machinename]:443 on a local IIS for provider hosted app.Can anyone please suggest how to fix this.

  13. Jane says:

    Hi Richard, This is a great control.  However, when I use it on my form that has some postback, the control disappears.  Is there a way around this?  Thanks.

  14. Kiril says:

    Hi Richard,

    This is a great control indeed. Recently I embedded it into a sharepoint app I'm working on. All was fine until I added a second metadata column and tried to update a list item. Looks like only the last field gets updated, the others do not change. I've tried various approaches to update the list item using CSOM, like SetFieldValueByValue (using TaxonomyFieldValue), ParseAndSetFieldValue method, ValidateUpdateListItem method, even setting the value as formatted string directly to the field and its corresponding hidden field. But all the time I get only the last field populated with a value, the rest do not change .. and of course, no errors from sharepoint.

    So I suppose it is not a problem in the picker control itself, but something in the way the list items are updated. Do you have an idea what could be causing this? And if that helps, I'm working with SharePoint Online envrironment.

    Thanks in advance!


  15. JaneR says:

    Hi, I am able to use the taxonomy control in my provider hosted app.  However, the display of the terms in the termsets are not sorted.  The term store have them sorted alphabetically.  I was wondering if I am missing a setting.  Please advice.  Thanks.


  16. says:

    Hi Richard,

    This is really a great control.

    Just an addition to this post. In the Term Store Management, for each term, there is a checkbox in general setting for “Available for Tagging”. Following is the OOB behavior for this setting

    • If the checkbox is checked, then the term can be viewed and selection is allowed whereas

    • If the checkbox is unchecked, then the term can be viewed but term selection is not allowed. Here, a different image is displayed against the term (i.e. EMMTermDisabled.png)

    To accommodate OOB behavior, following changes can be done in the utility. This code change will perform following for the terms which are not allowed for tagging

    1. Does not allow user to select a term by mouse click

    2. Exclude such terms from the suggestions when user types in the textbox

    Change in Project: Add EMMTermDisabled.png to the project

    Description: Download image from  /_layouts/15/Images/EMMTermDisabled.png and add it to the project

    Change in taxonomypickercontrol.js

    Step1: Add new property in the Term constructor (after line 15)

    Description: Add new property to hold setting value


    this.IsAvailableForTagging = rawTerm.get_isAvailableForTagging();

    Step2: Changes in toHtmlLabel method (at line: 26)

    Description: Check whether the term is available for tagging and return markup with appropriate image  


    return $('<li class="cam-taxpicker-treenode-li"><div class="cam-taxpicker-treenode"><div class="cam-taxpicker-expander ' + addlClass + '"></div><img src="../content/images/' + (this.IsAvailableForTagging == true ? 'EMMTerm.png' : 'EMMTermDisabled.png') + '" alt=""/><span class="cam-taxpicker-treenode-title" data-item="' + this.Name + '|' + this.Id + '">' + this.Name + '</span></div></li>');

    Step3: Change in getSuggestions method (at line: 134)

    Description: Check whether the term is available for tagging and add it to the suggestions list accordingly


    if (e.Name.toLowerCase().indexOf(text.toLowerCase()) == 0 && e.IsAvailableForTagging == true)

    Step4: Change in pushSelectedTerm method (after line: 879)

    Description: Add if condition to check if the term is available to tagging. Move the code inside if method.


    if (term.IsAvailableForTagging == true) {

        var clonedTerm = term.clone();

        //clear the RawTerm so it can be serialized

        clonedTerm.RawTerm = null;

        //pop the existing term if this isn't a multi-select

        if (!this._isMulti)


        //add the term to the selected terms array




    Hope this helps.


  17. Icortraja Erattaimuthu says:

    Hi Richard,

    This is cool control. I have used this in SharePoint hosted app, all working nice. But when i entered new term then i selected available tag, the new term getting vanished. Please guide me to resolve this.