MOSS CAML(4)综合使用及创建视图

在脚本中使用视图

下例说明了如何使用 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>">

你可能感兴趣的:(MOSS CAML(4)综合使用及创建视图)