代码之家  ›  专栏  ›  技术社区  ›  Shiraz Bhaiji

SharePoint 2010:跨网站聚合任务

  •  2
  • Shiraz Bhaiji  · 技术社区  · 15 年前

    我们有一个包含多个团队网站的网站集。每个工作组网站都有一个任务列表。

    我们希望显示根站点上所有团队站点中任务的聚合列表。最好的方法是什么?

    1 回复  |  直到 11 年前
        1
  •  5
  •   jcjr Thunder-KC Inc    11 年前

    你可以使用 SPSiteDataQuery 查询集合中所有网站的所有列表。通过将serverTemplate值传递给 SPSiteDataQuery.Lists 财产。任务的ServerTemplate ID是107。通过将“sitecollection”值传递给 SPSiteDataQuery.Webs 财产。

    SPSiteDataQuery返回的数据表信息非常有限(我认为只有列表和项ID),因此必须在 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);