Sharepoint开发中CAML的介绍
【转载】源地址:https://www.cnblogs.com/gzhr/p/10750859.html
一. 前言
在SharePoint中,不支持直接操作数据库,但开发过程中,避免不了查询数据,那么,在SharePoint中如何查询数据?
当然是使用CAML语法。
二. 目录
\1. 什么是CAML
\2. 如何使用CAML查询数据
3.1 如何通过知识分享模板创建分享文章
3.2 筛选条件
3.3 逻辑运算
3.4排序条件
3.5返回字段
3.6查询范围
3.7字段类型
3.8完整例子
4.总结
三. 什么是CAML
协作应用程序标记语言 (CAML) 是一种基于 XML 的语言。
在SharePoint使用此语言描述对列表的查询,同时也描述字段类型定义、站点模板定义等。
在SharePoint开发中,基本都包含数据查询,根据某些筛选、排序条件,查询某个列表条目的集合。
四. 如何使用CAML查询数据
4.1 筛选条件
操作符 | 备注 |
---|---|
Eq | 等于 |
Neq | 不等于 |
Lt | 小于 |
Leq | 小于等于 |
Gt | 大于 |
Geq | 大于等于 |
Contains | 包含 |
BeginsWith | 以某字符串开头 |
In | 在集合范围内 |
IsNull | 为空, |
IsNotNull | 不为空 |
Membership | 属于用户组 |
User | 用户 |
Boolean | 是否,值(1是,0否) |
_ModerationStatus | 批准,0已批准,1已拒绝,2待定 |
4.2 逻辑运算
在CAML中也支持多个查询条件的逻辑组合,支持“与”和“或”,但是不支持“非”。通过和标签进行逻辑运算。
不过需要特别声明的是,And标签和Or标签内部,只能使用两个查询条件。
And标签和Or标签内部,只能使用两个查询条件,需要3个条件,则需要改成And嵌套And
Value
Value
Value
4.3 排序条件
使用指定排序条件。
查询条件中每个字段按照排列的顺序依次为首要查询条件、次要查询条件:
其中的Name属性同样必须使用内部名称,Ascending指定升序或者降序,则默认升序。
4.4 返回字段
考虑到查询性能,需要指定返回字段,不指定则返回所有字段。指定返回字段的方式使用的形式。
例如,如果需要返回标题、ID字段,则写法为:
4.5 查询范围
ViewAttributes = “Scope=‘FilesOnly’”
Scope=‘Default’ : 只查询指定文件夾下的项目及子文件夾
Scope=‘FilesOnly’ : 只查询指定文件夾下的项目
Scope=‘Recursive’ : 查询所有项目,不查询文件夾
Scope=‘RecursiveAll’ : 查询所有项目和所有子文件夾
4.6 字段类型
使用CAML语法查询列表数据,需要指定字段类型,不同的字段类型,CAML语法也不一样。下面列出常用的字段类型以及常用的常用类型的查询方式。
成员名称 | 说明 |
---|---|
Integer | 正整数或负整数值。 |
Text | 单行文本。 |
DateTime | 日期和时间值。 |
Counter | 内部 ID 字段的整数 |
Choice | 选项值。 |
Lookup | 其他列表中的值对的引用。 |
Boolean | 数据库中存储为1或0的布尔值。。 |
Number | 浮点数。 |
Currency | 在特定区域设置基于货币值的格式。 |
URL | 超链接。 |
Calculated | 计算的值。 |
User | SharePoint 网站的用户。 |
ModStat | 内容审批状态。 |
4.6.1 Integer
12
4.6.2 T****ext
测试
4.6.3 Boolean
True
1
False
<FieldRef Name='IsEnd />0
4.6.4 Url
例如:http://sp/managedpath/spwebOrSitecollectionname,需要用相对地址
/managedpath/spwebOrSitecollectionname
4.6.5 Calculated
这里的Type取值为SPFieldCalculated.OutputType
Rafael
4.6.6 Counter
66
4.6.7 User
根据用户ID查询
31"
4.6.8 F****older
如果是文件,则FSObjType的值为0
1
4.6.9 D****ate
默认情况下,对于时间和日期类型的查询只精确到日期,如果需要精确到时间:
2009-10-08T17:48:37Z
(其中的日期格式可以通过使用一个静态方法SPUtility.CreateISO8601DateTimeFromSystemDateTime转换得到)
4.6.10 L****ookup
如果查询的字段类别是lookup,指定值的时候可以指定具体值也可以指定ID,如果需要指定ID,需要在FieldRef元素里指定LookupId为true
<FieldRef Name='CFRefTitle />
测试
或者
11
4.6.11 I****sNull
4.6.12 Is****NotNull
< IsNotNull> </ IsNotNull>
4.6.13 ModStat
0
4.7 完整例子
查询标题为**的数据。
五. 总结
本文主要介绍了如何使用CAML查询数据,只有掌握它,才能更好地进行SharePoint开发。
在编写CAML字符串的时候,需要特别注意Xml标签的大小写是敏感的。
CAML语法,以Xml的形式进行标准化,便于计算机的解析和阅读,相比SQL而言,也更加安全,不用担心SQL注入。
要说CAML的地位就相当于SQL在网站中的地位一样,使你不得不去熟悉它。