在视图中嵌入视图
视图可以嵌入到其他视图中,以便从 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:[email protected]" 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;
}