如何在C#中获取SharePoint术语的所有子项?
发布时间:2020-12-15 08:02:45 所属栏目:百科 来源:网络整理
导读:我正在为SharePoint 2010编写一个webpart,根据发布日期恢复某个(自定义)类型的最新页面.它仅考虑使用指定术语标记的页面.我希望它能够使用标记有所选术语的子项的页面来执行此操作. 如果我有这样的术语树: 英格兰 肯特 多佛 坎特伯雷 萨里 克罗伊登 克劳利
我正在为SharePoint 2010编写一个webpart,根据发布日期恢复某个(自定义)类型的最新页面.它仅考虑使用指定术语标记的页面.我希望它能够使用标记有所选术语的子项的页面来执行此操作.
如果我有这样的术语树: >英格兰 >肯特 >多佛 >萨里 >克罗伊登 然后通过选择肯特,我希望我的webpart显示标记为Kent,Dover或Canterbury的最新页面. 这可能在C#中吗? 谢谢你的时间. 解决方法
您正在寻找的功能是
Term.GetTerms
您需要从您的字段中获取TaxonomyValue 然后,您必须获取当前的TaxonomySession,然后使用TaxonomySession获取字段中使用的术语.从该术语开始,您可以使用Parent字段获取父Term. TaxonomyFieldValue v = null; // Notsurehowtodothisbit(); TaxonomySession session = new TaxonomySession(site); if (session.TermStores != null && session.TermStores.Count > 0) { TermStore termStore = session.TermStores[0]; Term t = termStore.GetTerm(v.TermGuid); Term parentTerm = t.Parent; TermCollection childTerms = t.GetTerms(); } 获得树之后,您可以使用caml查询生成SPList.GetList查询,该查询会返回标记为该方式的任何内容. 我没有在这方面做过实验…… private SPListItemCollection GetItemsByTerm(Term term,SPList list) { // init some vars SPListItemCollection items = null; SPSite site = SPContext.Current.Site; // set up the TaxonomySession TaxonomySession session = new TaxonomySession(site); // get the default termstore TermStore termStore = session.TermStores[0]; // If no wssid is found,the term is not used yet in the sitecollection,so no items exist using the term int[] wssIds = TaxonomyField.GetWssIdsOfTerm(SPContext.Current.Site,termStore.Id,term.TermSet.Id,term.Id,false,1); if (wssIds.Length > 0) { // a TaxonomyField is a lookupfield. Constructing the SPQuery SPQuery query = new SPQuery(); query.Query = String.Format("<Where><Eq><FieldRef Name='MyTaxonomyField' LookupId='TRUE' /><Value Type='Lookup'>{0}</Value></Eq></Where>",wssIds[0]); items = list.GetItems(query); } return items; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |