1,最近的项目中遇到一个需求,站点中有几十个列表,其中每5,6个列表属于一个模块下的。客户的需求是,首页上显示一个模块下所有列表数据的前5条,并按创建时间排序。

2,刚刚考虑到这块的实现方法时,用的是DataTable存储每个列表的前五条,然后DataTable在排序,取前五条,这样做的缺点显而易见,需要多次访问列表,然后取出的数据创建时间排序还不一定是正确的。后来发现SharePoint可以跨列表查询,解决这个问题真是太方便了。

3,

static void Main(string[] args)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite("http://sp2013/sites/DYZX"))
{
using (SPWeb web = site.OpenWeb())
{
//声明Query对象
SPSiteDataQuery query = new SPSiteDataQuery();
query.Query = "<OrderBy><FieldRef Name=\"Created\" Ascending=\"False\" /></OrderBy>";
query.RowLimit = 5;
query.Webs = "<Webs Scope='SiteCollection' />";
query.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='Created' /><ProjectProperty Name='Title' /><ListProperty Name='Title' />";
query.Lists = "<Lists>" +
"<List ID=\"3f3f85f0-b4a2-4ef3-9e59-56d3ee9f79ed\" />" +
"<List ID=\"498e313f-f54f-4919-9651-54e78c59f3c5\" />" +
"</Lists>";
DataTable dt = web.GetSiteData(query);
foreach (DataRow dr in dt.Rows)
{
foreach (DataColumn dc in dt.Columns)
{
Console.WriteLine(dc.ColumnName+":"+dr[dc.ColumnName].ToString());
}
}
}
}
});
}

4,query.webs:

此元素的属性只有一个:Scope。能赋予它的值有3个吧,尽管MSDN上说只有2个…..

"<Webs Scope='SiteCollection' />",包含当前网站所在的网站集(Site)下所有网站(Web)以及子网站(Web)

"<Webs Scope='Recursive' />",包含当前网站(Web)以及其下的所有子网站(Web)

默认,仅仅包含当前网站(Web)

5,query.Lists = "<Lists ServerTemplate=\"107\" />";
     query.Lists = "<Lists BaseType=\"0\" />";
     query.Lists = "<Lists Hidden = \"true\" />";

此元素将定义你在文档库(Document Libraries)或者列表(Lists)里的搜索范围。 属性有4个:BaseType、ServerTemplate、Hidden、MaxListLimit 此外,子元素有两个:List、WithIndex。使用子元素可以将搜索条件限制在比较小的范围之内。 下面是关于属性的介绍。

(1) BaseType (例:"<Lists BaseType='1'/>")

必须要注意的是这个属性的默认值为"<Lists BaseType='0'/>",也就是说缺省或者该属性设置出错时会查询文档库以外的所有列表。

(2)ServerTemplate (例: "<Lists ServerTemplate='850'/>")搜索指定类型的列表(850为页面库列表类型)。这个属性的值出错时会以默认值进行查询。

(3) Hidden (例:"<Lists ServerTemplate='850' Hidden='TRUE'/>") 设定能否搜索隐藏列表。默认是搜索所有非隐藏的列表。

(4) MaxListLimit(例:"<Lists BaseType='1' MaxListsLimit='500'/>") 定义搜索的列表的总数,当超过这个数字时,SPSiteDataQuery会抛出一个SPException的例外。这个属性的默认值为1000。当把此属性设置为0时,那么搜索的列表数目将不会受到限制。

(5)子元素List(例:上面的代码即时使用的子元素List),定义搜索列表的Guid,只在指定的列表中搜索。

参考博文:http://www.cnblogs.com/jinho/archive/2011/03/15/1985448.html

SharePoint中跨列表查询的更多相关文章

  1. SHAREPOINT - CAML列表查询

    首先要了解的是CAML(Collaboration Application Markup Language)不仅仅是用在对列表.文档库的查询,字段的定义,站点定义等处处使用的都是CAML. 简单的提一 ...

  2. [总结]SHAREPOINT - CAML列表查询(上)

    首先要了解的是CAML(Collaboration Application Markup Language)不仅仅是用在对列表.文档库的查询,字段的定义,站点定义等处处使用的都是CAML. 简单的提一 ...

  3. SharePoint 2013 列表多表联合查询

    在SharePoint的企业应用中,遇到复杂的逻辑的时候,我们会需要多表查询:SharePoint和Sql数据表一样,也支持多表联合查询,但是不像Sql语句那样简单,需要使用SPQuery的Joins ...

  4. SharePoint 2013 列表关于大数据的测试<二>

    1.给测试列表添加查阅项字段,100个,代码如下: 2.插入测试数据的方法,注意查阅项字段的格式,代码如下: 3.插入10w条数据,时间花费如下(不建议List[LISTNAME].Items.Add ...

  5. Sharepoint 2013列表视图和字段权限扩展插件(免费下载)!

    记得2014年春节期间,有博客园的网友通过QQ向我咨询Sharepoint 2013列表视图和字段权限扩展,因为之前他看到我博客介绍Sharepoint 2010列表视图和字段的权限控制扩展使用,问有 ...

  6. sharepoint 2013 列表和库标签 元数据导航配置(2)

    接前面提到的,如何创建一个术语库.sharepoint 2013 列表和库标签 元数据导航配置(1), 现在要做的,就是如何在自定义或者文档库中使用这个术语库,实现标签功能,通过这些标签,找到对应的文 ...

  7. atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模

    )----列表查询建模 1. 配置条件字段@Conditional 1 2. 配置条件字段显示类型为range----@Conditional(displayType = displayType.ra ...

  8. 【Javascript】列表查询页面,简单地保存上一次查询的查询参数

    开发中经常做一些查询参数 + 列表参数的功能,这些功能有时候需提供导出Excel,或带超链接到其他明细页面的功能点. 在一些交互性要求严格的系统,需求方会要求: 用户第一个输入某些查询条件进行列表查询 ...

  9. SharePoint 2013 列表启用搜索

    转载自:http://www.cnblogs.com/jianyus/p/3470117.html SharePoint 2013列表搜索的设置,只是进行完全爬网,就可以使用.如果开启爬网不是很熟练可 ...

随机推荐

  1. IIS 部署 Python Django网站流程(受够了野路子)

    知道的,百度上搜出来的东西质量令人唏嘘.当你求助的时候多半还得靠自己,或者靠Google 介入正题,详细来一遍流程吧 当然,我是用Visual Studio 2019 来编辑开发Django项目的,如 ...

  2. NTP POOL PROJECT:全球最大的免费NTP服务集群

    pool.ntp.org项目是一个提供可靠易用的NTP服务的虚拟集群,它作为一个大的NP服务器可以支撑全球数百万客户端使用.该项目允许那些能提供NTP服务的服务器加入到该集群中,截止2012年8月份, ...

  3. C语言各类型大小,结构体大小 sizeof(struct A)

    C语言类型大小总览 编译器pack指令 #pragma pack(n)——定义n字节对齐 C++固有类型的对齐取编译器对齐与自身大小中较小的一个 32位C++默认8字节对齐.gcc编译器默认4字节对齐 ...

  4. UITableView中cell点击的绚丽动画效果

    UITableView中cell点击的绚丽动画效果 本人视频教程系类   iOS中CALayer的使用 效果图: 源码: YouXianMingCell.h 与 YouXianMingCell.m / ...

  5. WinPE ISO制作

    1.安装ADK,然后导出winPE镜像文件和启动文件: 打开 部署和映像工具环境,cd "Windows Preinstallation Environment",运行 copyp ...

  6. Vmware Horizon 服务器替换 ssl 证书

    先申请好证书,如通配符SSL证书 *.centaline.com.cn ,公网的证书供应商会给到3个文件:centaline.com.cn.crt .centaline.com.cn.csr.cent ...

  7. ZT 二分插入排序也称折半插入排序

    二分插入排序也称折半插入排序,基本思想是:设数列[0....n]分为两部分一部分是[0...i]为有序序列,另一部分是[i+1.....n]为无序序列,从无序序列中取一个数 x ,利用二分查找算法找到 ...

  8. 【3】python中如何生成随机数的几个例子

    #__author:"吉勇佳" #date: 2018/10/14 0014 #function: import math import random # 向上取整 print(m ...

  9. 【接口】常见接口集合(返回JSON)

    转<JSON校验网站…>http://www.bejson.com/go.html?u=http://www.bejson.com/webInterface.html 这里为大家搜集了一些 ...

  10. 个人作业——APP案例分析

    APP--饿了么:平台--Android 第一部分 调研, 评测 1 个人上手体验 首先送上APP截图一张: 相信很多学生都用过这个APP了,第一次使用都是因为新用户有大额的满减优惠才下载这个APP使 ...