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 子元素(带有或不带 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>

     <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 HttpHost 和 LookupColumn 元素构造的。LookupColumn 元素用于为列表的 FileRef 字段(即 DocMd 表中包含的图像文件 URL,它存储了服务器上所有站点的所有文档 URL)返回查找值。此视图中还显示了 Title 字段和 Artist 字段。

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

<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 HttpHost 和 LookupColumn 元素构造的。

页面中需要包括下面的处理说明,以便 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-03-06 13:05  邑尘  阅读(325)  评论(0)    收藏  举报