2011-09-28 135 views
1

如何获取内容类型的子内容类型?获取内容类型的子内容类型

here我了解到,所有的子内容类型都有contentTypeId,以父母的ID开头。所以,我试图使用链接中的建议方式。

让我告诉你,我第一次尝试:

 using (var site = new SPSite(SPContext.Current.Site.ID)) 
     { 
      using (var web = site.RootWeb) 
      { 
       SPContentTypeId ctId = new SPContentTypeId(MasterContentTypeId); 
       SPContentType masterCt = web.ContentTypes[ctId]; 

       var queryString = string.Empty; 
       queryString += "<Where>"; 
       queryString += "<BeginsWith>"; 
       queryString += "<FieldRef Name='ContentTypeId'/>"; 
       queryString += "<Value Type='Text'>"; 
       queryString += MasterContentTypeId; 
       queryString += "</Value>"; 
       queryString += "</BeginsWith>"; 
       queryString += "</Where>"; 

       SPSiteDataQuery query = new SPSiteDataQuery { Query = queryString }; 
       DataTable dt = web.GetSiteData(query); 
       DataView dv = new DataView(dt); 

       foreach (DataRow row in dt.Rows) 
       { 
        //Do Something Necessary 
       } 
      } 
     } 

,但没有行的DataTable的回报。

这是正确的方式来做到这一点,但有一些缺失或错误;还是我做这一切都错了?

回答

1

我想我找到了一个解决方案。 这里是参考:link

IEnumerable<SPContentType> descendantContentTypes = from SPContentType childCt in web.AvailableContentTypes 
                    where childCt.Id.IsChildOf(parentContentTypeId) 
                    select childCt;