现在的位置: 首页 > 综合 > 正文

CAML(协作应用程序标记语言)

2013年04月20日 ⁄ 综合 ⁄ 共 7698字 ⁄ 字号 评论关闭

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 子元素(带有或不带 ViewHeaderViewFooter 元素)来布置用于显示数据的视图表。
  • 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 元素包含 FieldsField 元素,这些元素枚举了 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 元素包含为列表中的每个项目枚举字段值的 FieldsField 元素。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>

抱歉!评论已关闭.