2009-10-09 64 views
2

考虑这个SharePoint站点层次:SharePoint内容查询Web部件 - 忽略当前级别

- Site Collection 
- Site1 
    - Subsite1 
     - AnotherSubsite1 
      - Page1 
      - Page2 
     - AnotherSubsite2 
    - Subsite2 
     - Page3 
     - Page4 
- Site2 

你可以假设在上述层次每个网站都有一个默认的页面。

如果我在Site1的默认页面上放置一个CQWP,我可以指示它开始获取放置位置低一级的数据吗?即忽略了网页/网站是目前,使其返回:

 - Subsite1 
     - AnotherSubsite1 
      - Page1 
      - Page2 
     - AnotherSubsite2 
    - Subsite2 
     - Page3 
     - Page4 

谢谢

回答

3

我将扩展CQWP并钩住了我自己的ProcessDataDelegate删除,这不是所需要的数据。例如:

protected override void OnInit(EventArgs e) 
{ 
    this.ProcessDataDelegate += ProcessItems; 
} 

public DataTable ProcessItems(DataTable data) 
{ 
    // Query the DataTable and remove unnecessary information 
} 

的WebId列data是的GUID对于每个返回的项目的SPWeb对象。查看您不再需要的网站SPWeb.ID,然后删除这些行。请注意,WebId列中的GUID是大写的,并且是“D”格式,如Guid.ToString()中所述。

请记得在末尾使用AcceptChanges()以确保DataTable已更新。

+0

这是一个有趣的方法,我可以轻松获得对当前网站的引用并将其排除 – 2009-10-09 15:40:57

+0

使用Reflector快速查看,表明CQWP不支持多个URL。我认为,走这条路将是漫长而痛苦的。 – 2009-10-09 15:44:06

+0

难题,您使用SPWeb对象的GUID的方法将会更清洁 – 2009-10-09 15:57:57