SharePoint - CAML
1. CAML是顺序操作,如果要实现类似 “A or B or C or D” 的结果,最好写成 “(((A or B) or C) or D)”的形式,但写成 “((A or B) or (C or D))” 也可以正常工作;
2. CAML中对时间操作时,时间格式为 “yyyy-MM-ddTHH:mm:ssZ”,需要注意T和Z都需要大写,例如:2014-10-29T14:45:00Z;但是,SharePoint数据库中的DateTime类型数据格式为:YYYY-MM-DD hh:mm:ss,例如:2015-05-12 03:45:09;因此在使用Caml进行查询时,需要先将datetime字段值转换为ISO Format,即 YYYY-MM-DD\Thh:mm:ss\Z,例如:2015-05-12T03:45:09Z;然后再进行查询操作,否则不起作用
3. 以下代码用于检测当前时间段内的会议室是否已被预订:
var camlQuery = new SP.CamlQuery();
var queryXML= "<View><Query>" +
"<ViewFields>" +
"<FieldRef Name='Title' />" +
"<FieldRef Name='EventDate' />" +
"<FieldRef Name='EndDate' />" +
"<FieldRef Name='Meeting_x0020_Room' />" +
"<FieldRef Name='ID'/>" +
"</ViewFields>" +
"<Where>" +
"<And>" +
"<Or>" +
"<Or>" +
"<Or>" +
"<And>" +
"<Leq>" +
"<FieldRef Name='EventDate' />" +
"<Value Type='DateTime' IncludeTimeValue='TRUE'>" + startDateTime +"</Value>" +
"</Leq>" +
"<Gt>" +
"<FieldRef Name='EndDate' />" +
"<Value Type='DateTime' IncludeTimeValue='TRUE'>"+ startDateTime +"</Value>" +
"</Gt>" +
"</And>" +
"<And>" +
"<Lt>" +
"<FieldRef Name='EventDate' />" +
"<Value Type='DateTime' IncludeTimeValue='TRUE'>"+ endDateTime +"</Value>" +
"</Lt>" +
"<Geq>" +
"<FieldRef Name='EndDate' />" +
"<Value Type='DateTime' IncludeTimeValue='TRUE'>"+ endDateTime +"</Value>" +
"</Geq>" +
"</And>" +
"</Or>" +
"<And>" +
"<Geq>" +
"<FieldRef Name='EventDate' />" +
"<Value Type='DateTime' IncludeTimeValue='TRUE'>"+ startDateTime +"</Value>" +
"</Geq>" +
"<Leq>" +
"<FieldRef Name='EndDate' />" +
"<Value Type='DateTime' IncludeTimeValue='TRUE'>"+ endDateTime +"</Value>" +
"</Leq>" +
"</And>" +
"</Or>" +
"<And>" +
"<Leq>" +
"<FieldRef Name='EventDate' />" +
"<Value Type='DateTime' IncludeTimeValue='TRUE'>"+ startDateTime +"</Value>" +
"</Leq>" +
"<Geq>" +
"<FieldRef Name='EndDate' />" +
"<Value Type='DateTime' IncludeTimeValue='TRUE'>"+ endDateTime +"</Value>" +
"</Geq>" +
"</And>" +
"</Or>" +
"<Eq>" +
"<FieldRef Name='Meeting_x0020_Room' />" +
"<Value Type='Lookup'>"+ meetingRoom +"</Value>" +
"</Eq>" +
"</And>" +
"</Where>" +
"</Query></View>";
camlQuery.set_viewXml(queryXML);
this.collListItem = oList.getItems(camlQuery);
4. 判断People类型字段的值是否等于当前用户:
<Eq>
<FieldRef Name="Filter_Users"/>
<Value Type="Integer">
<UserID/>
</Value>
</Eq>
5. 判断当前用户是否属于People类型字段中的一员(Filter_Users是一个People类型字段,允许多选,包含User和Group):
<Membership Type="CurrentUserGroups">
<FieldRef Name="Filter_Users"/>
</Membership>
6. 在CAML语句中使用Lookup字段进行查询时,并不需要做特殊处理,只需要注明字段类型为Lookup,然后使用字段值直接进行查询即可,类似普通的单行文本(Text类型);
<Eq>
<FieldRef Name='Location' />
<Value Type='Lookup'>Room-1</Value>
</Eq>
7.
SharePoint - CAML的更多相关文章
- SHAREPOINT - CAML列表查询
首先要了解的是CAML(Collaboration Application Markup Language)不仅仅是用在对列表.文档库的查询,字段的定义,站点定义等处处使用的都是CAML. 简单的提一 ...
- SharePoint CAML Query小结
CAML的结构. <View Type="HTML" Name="Summary"> <ViewBody ExpandXML="TR ...
- Overcoming the List View Threshold in SharePoint CAML queries
From: https://www.codeproject.com/articles/1076854/overcoming-the-list-view-threshold-in-sharepoint- ...
- SharePoint CAML In Action——Part II
在SharePoint中,相对于Linq to SharePoint而言,CAML是轻量化的.当然缺点也是显而易见的,"Hard Code"有时会让你抓狂.在实际场景中,经常会根据 ...
- SharePoint CAML In Action——Part I
在SharePoint中,我们经常要对List进行操作,比如要从List中取出相应的ListItem,利用CAML是个好办法.在没了解CAML之前,我是这样取数据的: MyList.Items.Cas ...
- Sharepoint CAML 增删改查 List
Lists.UpdateListItems 方法 (websvcLists) Windows SharePoint Services 3 Adds, deletes, or updates the ...
- 深入浅出SharePoint——Caml快速开发
适用于Visual Studio 2010的Caml智能感知工具 http://visualstudiogallery.msdn.microsoft.com/15055544-fda0-42db-a6 ...
- [总结]SHAREPOINT - CAML列表查询(上)
首先要了解的是CAML(Collaboration Application Markup Language)不仅仅是用在对列表.文档库的查询,字段的定义,站点定义等处处使用的都是CAML. 简单的提一 ...
- SharePoint Caml Query 使用
需要注意的是: 再使用ListQueryWebPart部件时,默认查看的list列表会出现乱码的情况,需要开启服务器呈现模式,如图: 特此记录一下
随机推荐
- AtCoder - 2566 优先队列
Let N be a positive integer. There is a numerical sequence of length 3N, a=(a1,a2,…,a3N). Snuke is c ...
- 配置YOLO2(ubuntu16.04+cuda8.0+opencv3.1.0)
要求已经安装好了CUDA 8.0 以及OpenCV3.1.0 YOLO官方网站 配置darknet git clone https://github.com/pjreddie/darknet cd d ...
- ansible基本模块-server
ansible XXX -m service -a "name=XXX state=started enabled=yes"
- poj 1220 NUMBER BASE CONVERSION
NUMBER BASE CONVERSION Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5976 Accepted: ...
- gym101201J Shopping 二分+RMQ+数学性质
题目传送门 题目大意: 给出n个商品的价格,排成一列,q次查询,每次查询如果你有x的钱,从l格子走到r格子,每种商品有无数个,能买就买,最后还会剩多少钱. 思路: 每一次买都要找离自己最近的且买的起的 ...
- HDU - 1525 博弈 暴力分析
先来看看比较显然的几个局面 (a,0) 先手必败 (a,a) 先手必胜 (a,ak) 先手必胜 (a,ak+r),k>1 先手必胜,因为先手有主动权把(a,r)让给后手或留给自己 对于开局(a, ...
- BZOJ - 2005 莫比乌斯水题
\(gcd=k+1\)时,每一个的贡献都是\(2k+1\) \(gcd=1\)时,每一个贡献为\(1\) #include<iostream> #include<algorithm& ...
- DP Intro - Tree DP
二叉苹果树 题目 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点 ...
- VIRTIO概述和基本原理
http://smilejay.com/2012/11/virtio-overview/ (KVM连载)5.1.1 VIRTIO概述和基本原理(KVM半虚拟化驱动) 11/15/2012MASTER ...
- How to Setup a Private Proxy Server on EC2 in Under 10 Minutes
How to Setup a Private Proxy Server on EC2 in Under 10 Minutes I’ve been slacking a bit with regular ...