获取内容类型的子内容类型

时间:2011-09-28 11:55:51

标签: sharepoint-2007 content-type

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

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 个答案:

答案 0 :(得分:1)

我想我找到了解决方案。 以下是参考:link

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