Sharepoint 2010: объединение задач на разных сайтах

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

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


person Shiraz Bhaiji    schedule 07.07.2010    source источник


Ответы (1)


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

SPSiteDataQuery возвращает DataTable с очень ограниченной информацией (я думаю, только список и идентификаторы элементов), поэтому вам нужно указать все дополнительные поля в файле 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);
person Panagiotis Kanavos    schedule 07.07.2010