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

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>

     <HTML><![CDATA[<TR><TD>]]></HTML>

       <HTML><![CDATA[<a target="_blank" href="]]></HTML>

       <LookupColumn Name="HomePageID"/>

       <HTML><![CDATA[">]]></HTML>

       <Field Name="Title"/>

       <HTML><![CDATA[</a></TD></TR>]]></HTML>

    </ViewBody>

    <ViewFooter>

    <HTML><![CDATA[</TABLE>]]></HTML>

    </ViewFooter>

 </View>

</ows:XML>

HomePageID 字段是 DocMd 表(该表存储服务器上的所有 URL)的查找字段。此处,HTML target 属性设置为 _blank,以便当用户单击子站点链接时,该子站点会显示在新窗口中。

返回页首

预填充输入框

要使用当前用户的名称和电子邮件地址来预填充表单,您可以创建一个返回此用户名的视图,然后将其指定给一个变量。使用 GetEmailFromUser 元素返回当前用户的电子邮件地址。

首先,添加一个 CAML 岛,它将此视图定义给包含该表单的页面(为了适应 MSDN Web 布局的需要,此代码示例已经“被截断”):

<ows:XML>

 <SetList>UserInfo</SetList>

 <View>

    <ViewFields>

      <FieldRef Name="Name"/>

    </ViewFields>

      <Query>

        <Where>

          <Eq>

            <FieldRef Name="ID"/>

            <Value Type="Integer"><UserID/></Value>

          </Eq>

        </Where>

      </Query>

      <ViewBody>

          <SetVar Name="UName" Scope="Request"><Field

Name="Name"/></SetVar>

      </ViewBody>

    </View>

</ows:XML>

请注意,此视图只用于返回当前用户的名称,此名称已指定给自定义 CAML 变量 UName。然后,您可以添加两个输入框,将适当的 CAML 指定给它们的 value 属性:

<input type="text" name="username" size="38" value="<ows:GetVar Name="UName"/>">

 

<input type="text" name="user_email" size="38" value="<ows:GetEmailFromUser HTMLEncode="TRUE"><UserID/></ows:GetEmailFromUser>">

返回页首

在视图中嵌入视图

视图可以嵌入到其他视图中,以便从 SharePoint Team Services 数据库中的多个表返回值。在下例中,将两个视图嵌入到主页上的另一个框架视图中,以便根据当前用户是否有过期任务来显示不同的消息。

此示例包含 Tasks 列表的两个视图,一个用于在当前用户有过期任务的情况下返回具有特定格式的消息,另一个用于返回过期项目的视图。

<ows:XML>

 <SetList>Tasks</SetList>

 <View>

    <ViewFields>

      <FieldRef Name="AssignedTo"/>

    </ViewFields>

    <Query>

      <Where>

        <And>

          <Eq>

            <FieldRef Name="AssignedTo"/>

            <Value Type="Integer">

              <UserID/>

            </Value>

          </Eq>

          <And>

            <Lt>

              <FieldRef Name="DueDate"/>

              <Value Type="DateTime">

                <Today/>

              </Value>

            </Lt>

            <Neq>

              <FieldRef Name="Status"/>

              <Value Type="Choice">Completed</Value>

            </Neq>

          </And>

        </And>

      </Where>

    </Query>

    <ViewBody>

      <HTML><![CDATA[<TABLE><TR><TD class="Warning">Hello ]]></HTML>

      <LookupColumn Name="AssignedTo" HTMLEncode="TRUE"/>

      <HTML><![CDATA[, these items are now past due!</TD></TR>

      <TR><TD>

        <A href="mailto:Manager_Name@example.com" class="ResolveNow">

          Please contact your manager</A>

      </TD></TR>

      <TR><TD>]]></HTML>

此框架视图可针对当前用户的 ID 等于 AssignedTo 字段值的情况以及截止日期在今天之前且状态不等于 Completed 的情况,查询数据库中的 Tasks 表。LookupColumn 元素用于将用户名称作为对用户的个性化警告的一部分返回。

在代码中的此处,可以插入 Tasks 列表的其他视图,以返回并显示过期项目。

     <SetList>Tasks</SetList>

      <View>

        <ViewFields>

          <FieldRef Name="LinkTitle"/>

          <FieldRef Name="Priority"/>

          <FieldRef Name="Body"/>

          <FieldRef Name="DueDate"/>

        </ViewFields>

        <Query>

          <Where>

            <And>

              <And>

                <Lt>

                  <FieldRef Name="DueDate"/>

                  <Value Type="DateTime">

                    <Today/>

                  </Value>

                </Lt>

                <Neq>

                 <FieldRef Name="Status"/>

                  <Value Type="Choice">Completed</Value>

                </Neq>

              </And>

              <Eq>

                <FieldRef Name="AssignedTo"/>

                <Value Type="Integer">

                  <UserID/>

                </Value>

              </Eq>

            </And>

          </Where>

        </Query>

        <ViewHeader>

          <HTML><![CDATA[<TABLE><TR>]]></HTML>

          <Fields>

            <HTML><![CDATA[<TH class="ms-vh">]]></HTML>

            <Field/>

            <HTML><![CDATA[</TH>]]></HTML>

          </Fields>

          <HTML><![CDATA[</TR>]]></HTML>

        </ViewHeader>

        <ViewBody>

          <HTML><![CDATA[<TR>]]></HTML>

          <Fields>

            <HTML><![CDATA[<TD class="ms-vb">]]></HTML>

            <Field/>

            <HTML><![CDATA[</TD>]]></HTML>

          </Fields>

          <HTML><![CDATA[</TR>]]></HTML>

        </ViewBody>

        <ViewFooter>

          <HTML><![CDATA[</TABLE>]]></HTML>

        </ViewFooter>

      </View>

      <HTML><![CDATA[</TD></TR></TABLE>]]></HTML>

    </ViewBody>

这在当前用户具有过期任务的情况下,完成了外部框架视图的 ViewBody 部分。ViewEmpty 部分可用于包含另一个视图,此视图可将另一则消息传送给没有过期任务的当前用户。

<ViewEmpty>

      <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="NoOverdues">Hello ]]>

          </HTML>

          <Field Name="Title"/>

          <HTML><![CDATA[, you have no past due items. Great work!</TD></TR></TABLE>]]></HTML>

        </ViewBody>

      </View>

    </ViewEmpty>

 </View>

</ows:XML>

通过将定义添加到 /_layouts/styles/ows.css(如下所示),可以为上述属性定义样式:

.Warning {

 font-size: 14pt;

 color: red;

 font-weight: bold;

 font-family: verdana;

 }

.ResolveNow {

 font-size: 12pt;

 color: red;

 text-decoration: underline;

 font-family: verdana;

 padding: 12px;

 font-weight: bold;

 }

.NoOverdues {

 font-size: 12pt;

 color: green;

 font-family: verdana;

 padding: 12px;

 font-weight: bold;

 }

下例在框架视图的 ViewEmpty 部分中嵌入一个视图,以便将另一消息显示给访问主页的当前用户(这取决于他们是否接受了名为 TeamSurvey 的调查)。如果他们已经接受了调查,则 ViewBody 部分将显示个性化的欢迎消息。如果未接受调查,则 ViewEmpty 部分将显示一则警告,并提供此调查的链接(为了适应 MSDN Web 布局的需要,此代码示例已经“被截断”):

<ows:XML>

 <SetList>u_TeamSurvey</SetList>

 <View>

    <ViewFields>

      <FieldRef Name="Author"/>

    </ViewFields>

    <Query>

      <Where>

        <Eq>

          <FieldRef Name="Author"/>

          <Value Type="Integer"><UserID/></Value>

        </Eq>

      </Where>

    </Query>

    <ViewBody>

      <HTML><![CDATA[<TABLE><TR><TD class="DidSurvey">Hello ]]></HTML>

      <LookupColumn Name="Author" HTMLEncode="TRUE"/>

      <HTML><![CDATA[, thanks for taking the

survey!</TD></TR></TABLE>]]></HTML>

    </ViewBody>

    <ViewEmpty>

      <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="Warning">Hello ]]>

            </HTML>

            <Field Name="Title"/>

           <HTML>

             <![CDATA[, you have not yet taken the survey!

               </TD></TR><TR><TD class="TakeNow">

               <A href="http://[server_name]/[subweb_name]/Lists/

                 TeamSurvey/overview.htm">

                 Please take the survey immediately!</A>

               </TD></TR></TABLE>]]></HTML>

          </ViewBody>

        </View>

    </ViewEmpty>

 </View>

</ows:XML>

您还可以将适当的样式定义添加到 ows.css 中。

.TakeNow {

 font-size: 12pt;

 color: red;

 text-decoration: underline;

 font-family: verdana;

 padding: 12px;

 font-weight: bold;

 }

.DidSurvey {

 font-size: 12pt;

 color: green;

 font-family: verdana;

 padding: 12px;

 font-weight: bold;

 }

可以采取的更极端方法是让 ViewBody 部分作为空元素,并只使用 ViewEmpty 部分将用户重定向到此调查,而不让他们看到主页,如下所示:

<ows:XML>

 <SetList>u_TeamSurvey</SetList>

    <View>

      <ViewFields/>

      <Query>

        <Where>

          <Eq>

            <FieldRef Name="Author"/>

            <Value Type="Integer"><UserID/></Value>

          </Eq>

        </Where>

      </Query>

      <ViewBody/>

      <ViewEmpty>

        <SetList>UserInfo</SetList>

          <View>

            <ViewFields/>

            <Query>

              <Where>

                <Eq>

                  <FieldRef Name="ID"/>

                  <Value Type="Integer"><UserID/></Value>

                </Eq>

              </Where>

            </Query>

          <ViewBody>

            <HTML><![CDATA[<Script>window.parent.location = 

              "http://[server_name]/[subweb_name]

              /Lists/TeamSurvey/overview.htm";</Script>]]></HTML>

          </ViewBody>

          </View>

      </ViewEmpty>

    </View>

</ows:XML>

此处,ViewBody 部分只包含将调查的 URL 指定到 window.parent.location 的脚本块。

返回页首

创建缩略图

您可以通过在 CAML 中嵌入 HTML 来创建包含图像的文档库的缩略图。下例假设存在一个名为 Image Gallery 的库,除了内置的 FileRef 和 Title 字段外,它还包含一个 Artist 字段。

<ows:xml>

 <SetList>u_ImageGallery</SetList>

 <HTML><![CDATA[<TABLE>]]></HTML>

 <View Name="Image Gallery">

    <ViewFields>

      <FieldRef Name="FileRef"/>

      <FieldRef Name="Title"/>

      <FieldRef Name="Artist"/>

    </ViewFields>

    <ViewBody>

      <HTML><![CDATA[<tr><td>]]></HTML>

      <HTML><![CDATA[<a href="]]></HTML>

      <HttpHost URLEncodeAsURL="TRUE"/>

      <LookupColumn Name="FileRef"/>

      <HTML><![CDATA["><img src="]]></HTML>

      <HttpHost URLEncodeAsURL="TRUE"/>

      <LookupColumn Name="FileRef"/>

      <HTML><![CDATA[" width=50 height=50></a></td><td>]]></HTML>

      <Field Name="Title"/>

      <HTML><![CDATA[</td><td>]]></HTML>

      <Field Name="Artist"/>

      <HTML><![CDATA[</td></tr>]]></HTML>

    </ViewBody>

 </View>

 <HTML><![CDATA[</TABLE>]]></HTML>

</ows:xml>

为图像文件的链接提供 URL 的 href 属性值是使用 CAML HttpHostLookupColumn 元素构造的。LookupColumn 元素用于为列表的 FileRef 字段(即 DocMd 表中包含的图像文件 URL,它存储了服务器上所有站点的所有文档 URL)返回查找值。此视图中还显示了 Title 字段和 Artist 字段。

同一视图还可以与矢量标记语言 (VML) 集成来创建缩略图。您可以使用 CDATA 部分来构造 VML rectimagedata 元素,以便两者均可以将图像显示为缩略图并提供图像文件的链接。

<ows:XML>

 <SetList Scope="Request">u_ArtDocs</SetList>

 <View Name="ThumbNailView">   

    <ViewFields>

      <FieldRef Name="FileRef"/>

      <FieldRef Name="Title"/>

      <FieldRef Name="Artist"/>

    </ViewFields>

    <ViewHeader>

      <HTML><![CDATA[<TABLE><TR><TD>]]></HTML>

    </ViewHeader>

    <ViewBody>

      <HTML><![CDATA[<TABLE cellpadding=20><TR><TD>]]></HTML>

      <HTML><![CDATA[<v:rect href="]]></HTML>

      <HttpHost URLEncodeAsURL="TRUE"/>

      <LookupColumn Name="FileRef"/>

      <HTML><![CDATA[" style="HEIGHT: 50px; LEFT: 10px;

         POSITION:relative; TOP:10px; WIDTH: 50px">

         <v:imagedata src="]]></HTML>

      <HttpHost URLEncodeAsURL="TRUE"/>

      <LookupColumn Name="FileRef"/>

      <HTML><![CDATA["/></v:rect>]]></HTML>

      <HTML><![CDATA[</TD><TD class=ms-vb><BR>]]></HTML>

      <Field Name="Title"/>

      <HTML><![CDATA[<BR>]]></HTML>

      <Field Name="Artist"/>

      <HTML><![CDATA[</TD></TR></TABLE>]]></HTML>

    </ViewBody>

    <ViewFooter>

      <HTML><![CDATA[</TD></TR></TABLE>]]></HTML>

    </ViewFooter>

    <Query/>

 </View>

</ows:XML>

rect 元素的 href 值(它为图像文件的链接提供 URL)是使用 CAML HttpHostLookupColumn 元素构造的。

页面中需要包括下面的处理说明,以便 VML 正常工作。

在写SharePoint查询XML字符串的时候要注意的一个问题

偶然在SharePointBlogs组里面看到的。

来源:MdP"s MOSS Blog

<And>和<Or>标签里面是不能同时套3个或更多比较标签的。

举例:

这么写是对的

<And>
 <Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
 <Eq><FieldRef Name=”ContentType”><Value Type=”Text”>Product</Value></Eq>
</And>

<Or>
 <Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
 <Eq><FieldRef Name=”ContentType”><Value Type=”Text”>Product</Value></Eq>
</Or>

但这么写是错的:

<And>
 <Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
 <Eq><FieldRef Name=”ContentType”><Value Type=”Text”>Product</Value></Eq>
 <Eq><FieldRef Name=”Field1”><Value Type=”Text”>Value</Value></Eq>
</And>

<Or>
 <Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
 <Eq><FieldRef Name=”ContentType”><Value Type=”Text”>Product</Value></Eq>
 <Eq><FieldRef Name=”Field1”><Value Type=”Text”>Value</Value></Eq>
</Or>

那如果需要同时And多个怎么办?

这样:

<And>
 <And>
  <Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
  <Eq><FieldRef Name=”ContentType”><Value Type=”Text”>Product</Value></Eq>
 </And>
 <Eq><FieldRef Name=”Field1”><Value Type=”Text”>Value</Value></Eq>
</And>

<Or>
 <Or>
  <Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
  <Eq><FieldRef Name=”ContentType”><Value Type=”Text”>Product</Value></Eq>
 </Or>
 <Eq><FieldRef Name=”Field1”><Value Type=”Text”>Value</Value></Eq>
</Or>

另外,Web部件管理器和事件处理程序管理器的英文版发布了:

http://www.colladec.com/en/default.aspx

posted @ 2009-05-14 11:16  一个呆子  阅读(603)  评论(0编辑  收藏  举报