Получение дочернего сайта, с которого пришел предмет после выполнения запроса spsitedataquery - PullRequest
1 голос
/ 09 марта 2012

У меня есть следующий код:

SPSiteDataQuery query = new SPSiteDataQuery();

                //Get List query string

                query.Lists = "<Lists BaseType='1'></Lists>";


                query.ViewFields = "<FieldRef Name='Title' Nullable='TRUE' />";
                query.ViewFields += "<FieldRef Name='ContentTypeId' Nullable='TRUE' />";
                query.ViewFields += "<FieldRef Name='ContentType' Nullable='TRUE' />";
                query.ViewFields += "<FieldRef Name='ArticleStartDate' Nullable='TRUE' />";
                query.ViewFields += "<FieldRef Name='Synopsis' Nullable='TRUE' />";
                query.ViewFields += "<FieldRef Name='PublishingRollupImage' Nullable='TRUE' />";
                query.ViewFields += "<FieldRef Name='Location' Nullable='TRUE' />";
                query.ViewFields += "<FieldRef Name='LOBGroup' Nullable='TRUE' />";
                query.Query = "<Where>" +
                                  "<Contains>" +
                                    "<FieldRef Name='ContentType'/>" +
                                    "<Value Type='Text'>DCP_Article</Value>" +
                                  "</Contains>" +
                                "</Where>";



                query.Query += "<OrderBy>" +
                                    "<FieldRef Name='ArticleStartDate' Descending='TRUE' />" +
                                "</OrderBy>";


                query.RowLimit = Convert.ToUInt32(loadsize);
                query.Webs = "<Webs Scope='Recursive' />";


                //Get Site Data from web
                DataTable dt = web.GetSiteData(query);

В своих результатах я хотел бы получить подсайт, с которого поступил элемент, я понимаю, что если я использую query.ViewFields += "<FieldRef Name='FileRef' Nullable='TRUE' />";, я могу получить полный URL-адрес элемента, но есть ли в любом случае, я могу просто получить дочерний сайт, к которому он пришел от? что-то вроде этого: query.ViewFields += "<FieldRef Name='SiteName' Nullable='TRUE' />";

Ответы [ 3 ]

3 голосов
/ 09 марта 2012

Попробуйте:

query.ViewFields += "<ProjectProperty Name=\"Title\" />";

Для получения дополнительной информации см. SPSiteDataQuery.ViewFields :

Свойства сайта можно включить с помощью тега ProjectProperty.Атрибут Name тега ProjectProperty идентифицирует конкретное свойство и может содержать одно из следующих значений:

  • Заголовок - заголовок веб-сайта, который содержит элемент.

  • WebId - GUID веб-сайта, который содержит элемент.

1 голос
/ 09 марта 2012

Вы можете полагаться как на EncodedAbsUrl, так и на FileRef для поиска в Интернете.Первый будет содержать полный путь к элементу, а второй только частичную часть (если я хорошо помню).Таким образом, выполнение подстроки должно дать вам путь в Интернете, где размещен элемент.

Извините, у меня нет моей виртуальной машины передо мной, но если вы посмотрите на такой инструмент, как SharePoint ExplorerДиспетчер, вы увидите все поля скрытых элементов списка и сможете выбрать то, которое ближе всего к вашему решению (но я уверен, что лучше всего полагаться на EncodedAbsUrl и FileRef надежно)

0 голосов
/ 09 марта 2012

И еще один вариант - использовать столбец WebId, который будет включен в ваш набор результатов.Это руководство, которое вы можете использовать, чтобы открыть веб-страницу, с которой пришел результат:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...