在脚本中使用视图
下例说明了如何使用 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>">