(四)使用SPSiteDataQuery进行多列表查询

1、概述

前面介绍的列表查询有很多优势,但是它的一个缺点就是一次只能在一个列表中进行查询,在SharePoint中,提供了一个跨网站、跨列表查询的机制。通过使用SPSiteDataQuery对象,以及SPWeb的GetSiteData方法,将SPSiteDataQuery作为参数,可以进行跨网站和跨列表的查询。

它与列表查询的相同之处在于:

(1) 使用同样的Query属性确定筛选条件和排序条件(不支持分组条件);

(2) 使用同样的ViewFields属性确定返回字段;

(3) 使用同样的RowLimit属性确定一次返回的条目数。

它与列表查询的不同之处在于:

(1) 可以跨网站跨列表查询(但是有一定的限制,见后文);

(2) 返回的类型是DataTable,而非SPListItemCollection;

(3) 不支持像列表查询那样的分页功能;

(4) 不再有ViewAttributes和Folder指定精细的查询范围;

(5) ViewFields属性返回字段的设置略有差别。

 

2、同时在多个列表中进行数据查询

通过使用SPSiteDataQuery的Lists属性指定跨列表的范围。

Lists是一个string类型的属性,同样需要使用CAML的格式来定义列表的范围,定义的方法包括如下内容:

(1) 指定列表模板,查询指定列表模板的所有列表,指定方式形如:“<Lists ServerTemplate='TemplateID' />”。其中的TemplateID为列表模板的整型ID,SharePoint内置列表模板的ID可以在SPListTemplateType枚举中查到,例如通知列表模板的ID是104.

(2) 指定列表基类型,查询指定基类型的所有列表,指定方式形如:“<Lists BaseType='BaseTypeID' />”。其中的BaseTypeID是列表基类型的ID,可以通过SPBaseType枚举查到,例如文档库类型的ID为1。

(3) 指定是否查找隐藏列表,默认情况下,跨列表查询时忽略隐藏列表的(比如网站模板库、母版页库等等),可以通过在Lists属性中指定Hidden属性来查找隐藏列表,形如:“<Lists Hidden='TRUE'/>”。

(4)指定查找某些特定的列表,通过列表的Guid可以在某几个特定的列表中进行查找,形如:

>
/>
/>
>

相关文章:

  • 2021-05-29
  • 2021-10-22
  • 2021-05-31
  • 2021-08-05
  • 2021-12-24
  • 2021-08-26
  • 2022-02-08
  • 2021-08-13
猜你喜欢
  • 2021-09-15
  • 2021-07-08
  • 2022-01-11
  • 2021-05-04
  • 2022-02-17
  • 2021-06-03
  • 2022-02-05
相关资源
相似解决方案