Sharepoint 2010: совокупные задачи на разных сайтах - PullRequest
2 голосов
/ 07 июля 2010

У нас есть семейство сайтов с несколькими сайтами команд.У каждого сайта группы есть список задач.

Мы хотели бы показать сводный список задач во всех сайтах группы на корневом сайте.Каков наилучший способ сделать это?

1 Ответ

5 голосов
/ 07 июля 2010

Вы можете использовать SPSiteDataQuery для запроса всех списков по всем сетям коллекции.Вы можете запросить список определенного типа, передав значение ServerTemplate свойству SPSiteDataQuery.Lists .Идентификатор ServerTemplate для задач - 107. Запрос всех веб-сайтов выполняется путем передачи значения «SiteCollection» в свойство SPSiteDataQuery.Webs .

SPSiteDataQuery возвращает таблицу данных с очень ограниченной информацией (я думаю, что это только список и идентификаторы элементов), поэтому вам нужно указать все дополнительные поля в свойстве SPSiteDataQuery.ViewFields .

Следующий код (адаптированный из образца документации класса) вернет все выполняющиеся задачи, упорядоченные по дате их убывания:

SPWeb web = SPContext.Current.Web;
SPSiteDataQuery query = new SPSiteDataQuery();

//Ask for all lists created from the tasks template.
query.Lists = "<Lists ServerTemplate=\"107\" />";

// Get the Title field.
query.ViewFields = "<FieldRef Name=\"Title\" />" ;
// Set the criteria and sort order.
query.Query = "<Where>" +
                       "<Eq>" +
                             "<FieldRef Name='Status'>" + 
                             "<Value Type='Choice'>In Progress</Value>" +
                       "</Eq>" +
                   "</Where>" +
                   "<OrderBy>" +
                       "<FieldRef Name=\"StartDate\" Ascending='False'/>" + 
                   "</OrderBy>";

// Query all Web sites in this site collection.
query.Webs = "<Webs Scope=\"SiteCollection\" />";

DataTable dt = web.GetSiteData(query);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...