如何在C#中获取SharePoint术语的所有子项?

我正在为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查询,该查询会返回标记为该方式的任何内容.

我没有在这方面做过实验……
但是Bart-Jan Hoeijmakers

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;
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


c语言数组越界会怎么样
c语言指针怎么等于数组
c语言数组怎么存入文字
c语言中怎么显示数组
c语言数组元素怎么选
c语言数组怎么累加
c语言数组符号怎么输入
c语言怎么用长数组
c语言数组函数怎么输入
c语言数组怎么去掉差异
c语言怎么求解数组
c语言数组怎么用变量
c语言怎么申明数组
c语言怎么控制数组
c语言怎么计算数组长度
c语言数组怎么插星号
c语言数组怎么加长度
c语言中怎么输出数组
c语言怎么记住数组边界
c语言数组怎么输入符号