zoukankan      html  css  js  c++  java
  • CAML 用法SPQuery 写法

    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>

    按上面的思路,我思考了下,如果在一个页面中,有多种情况存在呢,可以是1个,也可以是两个,三个,甚至更多,那么不是要判断很多么?于是经过两个多小时的尝试,终于写了一个较简便的方法,我将在下一篇博文中进行整理说明,有需要的可以关注下......(*^__^*)

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

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

  • 相关阅读:
    资源 | TensorFlow推出新工具Seedbank:即刻使用的预训练模型库【转】
    Vim 基本設置 – 使用Vim-plug管理插件 (3)【转】
    Linux kernel 编译问题记录【转】
    深度学习(四)卷积神经网络入门学习(1)【转】
    深度学习:Keras入门(二)之卷积神经网络(CNN)【转】
    深度学习:Keras入门(一)之基础篇【转】
    CNN笔记:通俗理解卷积神经网络【转】
    [Deep Learning] 神经网络基础【转】
    一文弄懂神经网络中的反向传播法——BackPropagation【转】
    Testin
  • 原文地址:https://www.cnblogs.com/KingStar/p/1911891.html
Copyright © 2011-2022 走看看