下例在框架视图的 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 正常工作。
偶然在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>