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列表会出现乱码的情况,需要开启服务器呈现模式,如图: 特此记录一下
随机推荐
- js 三大事件(鼠标.键盘.浏览器)
鼠标事件: click:单击 dblclick:双击 mousedown:鼠标按下 mouseup:鼠标抬起 mouseover:鼠标悬浮(进入) mouseout:鼠标离开(离开) mousemov ...
- C++_新特性总结与未来的路
了解C++之后,可以阅读一些高级主题和面向对象编程相关的书籍: OOP有助于开发大型的项目,并提高其可靠性: OOP方法的基本活动之一就是发明能够模拟当前情况的类.当前情况被统称为问题域. 由于实际问 ...
- CSL 的字符串(思维+STL操作)
链接:https://ac.nowcoder.com/acm/contest/551/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048 ...
- linux下忘记mysql的root密码
一.处理方案 #1. 结束当前正在运行的mysql进程 /etc/init.d/mysql stop #2. 用mysql安全模式运行并跳过权限验证 mysqld_safe --user=mysql ...
- jenkins显示发送邮件发送成功但是邮箱没收到
jenkins显示发送邮件发送成功但是邮箱没收到 解决方案: 重新配置一下系统管理-系统设置-Extended E-mail Notification
- PIE SDK主/次要分析
1.算法功能简介 主要分析功能是采用类似卷积滤波的方法将较大类别中的虚假像元归到该类中,首先定义一个变换核尺寸,然后用变换核中占主要地位(像元最多)类别数代替中心像元的类别数,次要分析相反,用变换核中 ...
- Yii2 hasMany 关联后加条件
当前模型类为活动表id,关联评论表的type_id,条件是评论表的type要等于2public function getComment(){ return $this->hasMany(Comm ...
- (转)企业Shell实战-MySQL分库分表备份脚本
本文来自http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.htm ...
- underscore javascript工具库支持seajs模块化
underscore是一个很有用的js工具库,但是好像默认不支持seajs模块化 新建一个文件例如叫做xx.js 谈后,键入 define(function(require,exports,modul ...
- opensuse13.1 安装 SqliteMan
Sqliteman是一个图形界面的sqliteman客户端 官网 http://www.sqliteman.com/ 1 添加源 http://download.opensuse.org/repos ...