標籤:style blog http io color ar os 使用 sp
在該文章中,我將介紹如何使用TaxonomyWebTaggingControl控制項, 首先我相信您已經在SharePoint Managed Metadata Service裡定義Term Sets,如果沒有,請先定義您的Term Sets(可以參考該文章how to create metadata column), 該控制項能協助我們顯示/設定各種Terms。
其次我們需要瞭解Managed Metadata的結構,請看以,您可以清晰地看到每一個結構(Term Store -> Group -> Term Set -> Terms),接下來我們進入主題, 該如何使用TaxonomyWebTaggingControl 控制項綁定這些資料呢,在該案例中我們綁定Product Type Group的所有資料。
根據以下步驟:
- 在我們的設計頁面中定義註冊Microsoft.SharePoint.Taxonomy控制項
<%@ Register TagPrefix="Taxonomy" Namespace="Microsoft.SharePoint.Taxonomy" Assembly="Microsoft.SharePoint.Taxonomy, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
2. 在內容部分添加TaxonomyWebTaggingControl控制項
<Taxonomy:TaxonomyWebTaggingControl ID="twtc_productType" runat="server"></Taxonomy:TaxonomyWebTaggingControl>
3. 在後台綁定資料(從Managed Metadata Service中擷取Group的資料)
1 using Microsoft.SharePoint; 2 using Microsoft.SharePoint.Taxonomy; 3 4 /// <summary> 5 /// TaxonomyWebTaggingControl Bind 6 /// </summary> 7 /// <param name="productTypeControl">TaxonomyWebTaggingControl Control</param> 8 public static void ProductTypeBind(TaxonomyWebTaggingControl productTypeControl) 9 {10 // Open the site11 using (SPSite site = new SPSite(SPContext.Current.Web.Url))12 {13 using (SPWeb web = site.OpenWeb())14 {15 TaxonomySession session = new TaxonomySession(site);16 // Get the Term Store node from Managed Metadata Service17 TermStore termStore = null;18 if (session.TermStores != null && session.TermStores.Count > 0)19 {20 termStore = session.TermStores["Managed Metadata Service"]; //if you a custom meta service you should change name.21 }22 if (termStore != null)23 {24 //Guid anchorId = new Guid();25 Group group = termStore.Groups["Product Type"]; // Get the Group node from Managed Metadata Service26 productTypeControl.SspId.Add(termStore.Id); // do it for all termsets27 foreach (TermSet item in group.TermSets)28 {29 productTypeControl.TermSetId.Add(item.Id); // Add the Term30 /* This could be achieved by setting AnchorId property for TaxonomyWebTaggingControl control that allows to specify ID of parent Term for any valid value in control.31 foreach (Term term in item.Terms)32 {33 if (term.Name == ManagedMetadataType.TermName)34 {35 anchorId = term.Id;36 break;37 }38 } */ 39 }40 41 //productTypeControl.AnchorId = anchorId;42 productTypeControl.GroupId = group.Id;43 productTypeControl.IsAddTerms = false;44 }45 }46 }47 }
以上代碼將可以擷取Product Type(defined by GB/T 13702-1992)節點的資料, 可以查看一下
有些朋友會問是否可以根據Term-節點作為父節點顯示?對於該問題的回答是可以, 比如我想以All為父節點,我們僅僅通過該控制項中的AnchorId屬性,將All的id賦值給AnchorId即可,留心的朋友會發現在以上代碼中注釋部分就是實現該功能
如果有大牛認為有更好的idea, 請提供您寶貴的建議供大家學習,謝謝
SharePoint 2013 如何使用TaxonomyWebTaggingControl 控制項