1.Geq(>=)
The Geq element is an arithmetic operator that means "greater than or equal to." It can be used within a Where element in a view definition.
<Query>
<Where>
<Or>
<IsNull>
<FieldRef Name="Expires" />
</IsNull>
<Geq>
<FieldRef Name="Expires" />
<Value Type="DateTime">
<Today />
</Value>
</Geq>
</Or>
</Where>
<OrderBy>
<FieldRef Name="Modified" Ascending="FALSE" />
</OrderBy>
</Query>
2.Eq(=)
The Eq element is an arithmetic operator that means "equal to" and is used within the Query element.
<Query>
<OrderBy>
<FieldRef Name="Modified" Ascending="FALSE"></FieldRef>
</OrderBy>
<Where>
<Or>
<Eq>
<FieldRef Name="Status"></FieldRef>
<Value Type="Text">Completed</Value>
</Eq>
<IsNull>
<FieldRef Name="Status"></FieldRef>
</IsNull>
</Or>
</Where>
</Query>
3.Gt(>)
The Gt element is an arithmetic operator that means "greater than." This element is used similarly to Eq and Lt.
<Query>
<Where>
<Or>
<IsNull>
<FieldRef Name="Deadline" />
</IsNull>
<Gt>
<FieldRef Name="Deadline" />
<Value Type="DateTime">
<Today />
</Value>
</Gt>
</Or>
</Where>
<OrderBy>
<FieldRef Name="Modified" Ascending="FALSE" />
</OrderBy>
</Query>
4.Lt(<)
The Lt element is an arithmetic operator that means "less than" and is used in queries in views. This element is used similarly to Eq and Gt.
<Query>
<Where>
<Or>
<IsNull>
<FieldRef Name="Deadline" />
</IsNull>
<Lt>
<FieldRef Name="Deadline" />
<Value Type="DateTime">
<Today />
</Value>
</Lt>
</Or>
</Where>
<OrderBy>
<FieldRef Name="Modified" Ascending="FALSE" />
</OrderBy>
</Query>
5.Neq(!=)
The Neq element is an arithmetic operator that means "not equal to" and is used in queries.
<Query>
<OrderBy>
<FieldRef Name="Modified" Ascending="FALSE"></FieldRef>
</OrderBy>
<Where>
<Or>
<Neq>
<FieldRef Name="Status"></FieldRef>
<Value Type="Text">Completed</Value>
</Neq>
<IsNull>
<FieldRef Name="Status"></FieldRef>
</IsNull>
</Or>
</Where>
</Query>
SPQuery 的Where 子句的用法
1、一个条件实例
<Where> <Or> <Eq><FieldRef Name='Name'/>
<Value Type='Text'>Mark</Value></Eq> <Eq><FieldRef
Name='Name'/><Value Type='Text'>Joe</Value></Eq> </Or>
</Where>
2、两个条件实例
<Where> <Or> <Eq><FieldRef Name='Name'/>
<Value Type='Text'>Mark</Value></Eq> <Or> <Eq>
<FieldRef Name='Name'/><Value Type='Text'>Joe</Value></Eq>
<Eq><FieldRef Name='Name'/><Value Type='Text'>Linda</Value></Eq>
</Or> </Or> </Where>
3、三个条件实例
<Where> <Or> <Eq><FieldRef Name='Name'/>
<Value Type='Text'>Mark</Value></Eq> <Or> <Eq>
<FieldRef Name='Name'/><Value Type='Text'>Joe</Value></Eq>
<Eq><FieldRef Name='Name'/><Value Type='Text'>Linda</Value></Eq>
</Or> </Or> </Where>
下表是CAML查询的一些简单说明:
元素 |
说明 |
And |
并且 |
BeginsWith |
以某字符串开始的 |
Contains |
包含某字符串 |
Eq |
等于 |
FieldRef |
一个字段的引用 (在GroupBy 中使用) |
Geq |
大于等于 |
GroupBy |
分组 |
Gt |
大于 |
IsNotNull |
非空 |
IsNull |
空 |
Leq |
小于等于 |
Lt |
小于 |
Neq |
不等于 |
Now |
当前时间 |
Or |
或 |
OrderBy |
排序 |
Today |
今天的日期 |
TodayIso |
今天的日期(ISO格式) |
Where |
Where子句 |
简介
协作应用程序标记语言 (CAML) 的 View 元素提供一个在 Microsoft SharePoint? Team Services 的数据库中执行查询和返回值的灵活方法。此元素适应对自定义 SharePoint Team Web 站点的广泛需求,从执行查询以便将数据返回到脚本进行处理,到布置页面部分中列表数据的显示。
要点 您必须具有写页面权限,才能上载页面。您必须以本地 Administrators 组成员的身份登录到服务器计算机,才能写入数据库。
根据您的目的是返回并显示值,还是仅返回值以便在脚本中进行处理,Web 站点的 Default.htm 页或任何列表的 AllItems.htm 页上的列表视图典型方案包含下列子元素。
- Query 如果您只希望在一个列表中返回所有值,则该子元素可以为空。
- ViewBody 可以使用 ViewBody 子元素(带有或不带 ViewHeader 和 ViewFooter 元素)来布置用于显示数据的视图表。
- ViewEmpty ViewEmpty 子元素指定当查询未返回任何数据时所显示的内容。它还为执行替代视图提供了有用的制约性,以防查询中不返回任何项目。请参见下面的示例。
- ViewFields 当视图不用于显示项目,只用于返回值进行处理时,ViewFields 子元素可以为空。
- RowLimit RowLimit 子元素指定要在当前窗口中显示的项目数。
- PagedRowset 当 RowLimit 元素包含的值超出时,PagedRowset 子元素将为下一个窗口定义一个视图。
- Toolbar 在 AllItems.htm 页上,Toolbar 子元素定义紧靠列表视图之上的页中显示的按钮和部分行。
CAML HTML 元素与 CDATA 标记共同用来在视图中嵌入标记语言或脚本(例如 <HTML><![CDATA[<TABLE><TR><TH>]]></HTML>)。
要点 为了完成下述任务,您必须具有写页面权限才能上载页面。您必须以本地 Administrators 组成员的身份登录到计算机,才能写入数据库。
假设您具有 SharePoint Team Services 数据库的访问权,则可以通过从 Views 表的 View 列复制视图方案来学习和自定义视图。如果有许多视图,您可以通过要修改 ListView 组件的全局统一标识符 (GUID) 来标识相应的数据库记录。在其他情况下(例如在表单中),您可能需要引用 Lists 表(列表的列表)中 ID、Name 或 Title 列值的组合。然后,您可以使用其视图方案替换整个组件,并使用以下 CAML 包围已复制的视图:
<ows:XML>
<SetList>[u_YourCustomListName[without "u_" for native lists]]</SetList>
<View>
.
.
.
[Copied view schema goes here]
.
.
.
</View>
</ows:XML>
在 Microsoft FrontPage 中,您可以选择一个视图,右键单击此视图,然后单击 Layout Customization 以展开视图方案并进行自定义。
注 应始终保存原始站点页面的副本,以便可以在需要时复原组件。
创建基本列表视图
下例布置了用于显示自定义列表 (u_MyCustomList) 的视图表。ViewFields 元素指定要在视图页眉中显示的 Title、Stock 和 Price 字段名称以及视图正文中显示的这些字段的值。
<ows:XML>
<SetList>[u_MyCustomList]</SetList>
<View Name="MyNewView">
<ViewFields>
<FieldRef Name="Title"/>
<FieldRef Name="Stock"/>
<FieldRef Name="Price"/>
</ViewFields>
ViewHeader 元素包含 Fields 和 Field 元素,这些元素枚举了 ViewFields 元素所指定的字段名称。HTML 元素包含用于显示表格标题的标记语言,这取决于 Web 或子站点的 /_layouts/styles/ows.css 文件中定义的 ms-vh 样式。
<ViewHeader>
<HTML><![CDATA[<TABLE><TR class="ms-vh">]]></HTML>
<Fields>
<HTML><![CDATA[<TH>]]></HTML>
<Field/>
<HTML><![CDATA[</TH>]]></HTML>
</Fields>
<HTML><![CDATA[</TR>]]></HTML>
</ViewHeader>
ViewBody 元素包含为列表中的每个项目枚举字段值的 Fields 和 Field 元素。HTML 元素包含用于在表格单元格中显示这些值的标记语言,这取决于 Web 或子站点的 /_layouts/styles/ows.css 文件中定义的 ms-vb 样式。
<ViewBody>
<HTML><![CDATA[<TR class="ms-vb">]]></HTML>
<Fields>
<HTML><![CDATA[<TD>]]></HTML>
<Field/>
<HTML><![CDATA[</TD>]]></HTML>
</Fields>
<HTML><![CDATA[</TR>]]></HTML>
</ViewBody>
<ViewFooter>
<HTML><![CDATA[</TABLE>]]></HTML>
</ViewFooter>
Query 部分查询股票小于 15 或价格大于 20.00 的情况。
<Query>
<Where>
<Or>
<Lt>
<FieldRef Name="Stock"/>
<Value Type="Number">
15
</Value>
</Lt>
<Gt>
<FieldRef Name="Price"/>
<Value Type="Currency">
20.00
</Value>
</Gt>
</Or>
</Where>
<OrderBy>
<FieldRef Name="Title"/>
</OrderBy>
</Query>
</View>
</ows:XML>
为了返回指定字段的所有值,您可以转而使用空的 Query 元素 ()。
在脚本中使用视图
下例说明了如何使用 CAML 视图返回项目 ID 并将它们指定给数组,以便在脚本中进行处理。此视图返回事件日期晚于 1/1/2002 的以逗号分隔的项目 ID 列表。这些项目 ID 被指定给 strIDs 变量,然后逐一显示在消息框中。
<Script language="JavaScript">
function getIDs()
{
var arrIDs = new Array();
var strIDs="<ows:XML>
<SetList>Events</SetList>
<View>
<ViewFields>
<FieldRef Name="ID"/>
</ViewFields>
<ViewBody>
<Fields>
<Field/>
<HTML><![CDATA[,]]></HTML>
</Fields>
</ViewBody>
<Query>
<Where>
<Gt>
<FieldRef Name="EventDate"/>
<Value Type="DateTime">2002-01-01T00:00:00Z</Value>
</Gt>
</Where>
</Query>
</View>
</ows:XML>";
arrIDs=strIDs.split(/,/);
alert(arrIDs);
}
</Script>
注 如果您要在 CAML 视图中动态插入用户输入的数据,而不只是像上例中那样对值进行硬编码,则需要从解释器掩盖 CAML,以防止立即处理该视图。有关详细信息,请参阅使用 XMLHTTP 在 SharePoint Team Services 中发布命令。
添加个性化消息
为了获得当前用户的名称并显示个性化消息,以下代码示例针对 UserInfo 表执行查询,此表是数据库中的全局列表,该数据库包含虚拟服务器上所有小组 Web 站点的所有用户信息。
<ows:XML>
<SetList>UserInfo</SetList>
<View>
<ViewFields>
<FieldRef Name="Title"/>
</ViewFields>
<Query>
<Where>
<Eq>
<FieldRef Name="ID"/>
<Value Type="Integer"><UserID/></Value>
</Eq>
</Where>
</Query>
<ViewBody>
<HTML>
<![CDATA[<TABLE><TR><TD class="Greeting">Hello ]]>
</HTML>
<Field Name="Title"/>
<HTML>
<![CDATA[, welcome to the team Web site.</TD></TR></TABLE>]]>
</HTML>
</ViewBody>
</View>
</ows:XML>
此示例查询当前用户的 ID 与 UserInfo 表中的 ID 相匹配的情况,并按 ViewFields 元素的指定显示对应的 Title 字段值(在此例中为用户名)。CDATA 部分布置用于对齐页面上个性化问候的简单表。请注意,为了设置格式,可将自定义样式定义添加到 ows.css 并在 HTML 及其元素中实现。
列出服务器上的所有子站点
下例显示如何通过创建数据库中 Projects 表的视图来创建返回服务器上所有子站点链接列表的视图:
<ows:XML>
<SetList>Projects</SetList>
<View Name="ProjectsView">
<ViewFields>
<FieldRef Name="Title"/>
<FieldRef Name="HomePageID" Explicit="TRUE"/>
</ViewFields>
<ViewHeader>
<HTML><![CDATA[<TABLE>]]></HTML>
</ViewHeader>
<ViewBody>