Получить дочерние типы контента для типа контента - PullRequest
1 голос
/ 28 сентября 2011

Как я могу получить дочерние типы контента для типа контента?

Начиная с здесь Я узнал, что все дочерние типы контента имеют contentTypeId, начинающийся с идентификатора родителя. Итак, я попытался использовать предложенный способ, который находится в ссылке.

Позвольте мне показать вам, что я попробовал первым:

        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 Ответ

1 голос
/ 28 сентября 2011

Я думаю, я нашел решение. Вот ссылка: ссылка

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