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
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号