1,在Office365中需要添加自定义的视图!用Spd添加视图,这儿我添加一个testView!
(1)打开testView.aspx将</ZoneTemplate>节点中的内容全部删除(保留</ZoneTemplate>节点)。
找到插入—数据视图—清空数据视图,如图:
(2)之后<ZoneTemplate>节点中会多出如下代码
1
2
3
4
5
6
7
8
9 |
<WebPartPages:DataFormWebPart runat= "server"
IsIncluded= "True"
AsyncRefresh= "True"
NoDefaultStyle= "TRUE"
ViewFlag= "8"
Title= "DataView 1"
PageType= "PAGE_NORMALVIEW"
__markuptype= "vsattributemarkup"
partorder= "1"
__WebPartId= "{6BECF84D-7F21-46F2-A290-DE2B17B883F0}"
id= "g_6becf84d_7f21_46f2_a290_de2b17b883f0" > <DataSources> </DataSources> <datafields/> <XSL> </XSL> </WebPartPages:DataFormWebPart> |
(3)在<DataSources>节点内插入数据源
(3)此时页面会又多出一部分代码,同时Spd右侧展示出数据源详细信息,选择要展示的字段(Ctrl+字段选中多个),然后点击"将选择的项插入为..."按钮,选择多项目视图!
(4)这儿我插入的为一个任务列表,添加了4个展示字段!Title,AssignTo,StartData,EndData!保存一下,打开页面看看效果!
(5)到此我们的自定义列表视图已经完成。
2,如何在自定义视图上添加数据过滤功能。
(1)实际开发中只是添加个视图是不能满足需求的,此处以一个数据过滤作为例子
创建参数
(2)这儿可以看到参数可以绑定参数源,点开下拉框可以看到控件,Cookie,表单...!此处注意绑定控件的话一定要绑定控件的客户端Id!
此时我们分析一下页面上生成的Xslt代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 |
<xsl:template name= "dvt_1.rowview" > <tr> <xsl: if
test= "position() mod 2 = 1" > <xsl:attribute name= "class" >ms-alternating</xsl:attribute> </xsl: if > <xsl: if
test= "$dvt_1_automode = ‘1‘"
ddwrt:cf_ignore= "1" > <td class = "ms-vb"
width= "1%"
nowrap= "nowrap" > <span ddwrt:amkeyfield= "ID"
ddwrt:amkeyvalue= "ddwrt:EscapeDelims(string(@ID))"
ddwrt:ammode= "view" ></span> </td> </xsl: if > <td class = "ms-vb" > <xsl:value-of select = "@Title" /> </td> <td class = "ms-vb" > <xsl:value-of select = "@StartDate" /> </td> <td class = "ms-vb" > <xsl:value-of select = "@DueDate" /> </td> <td class = "ms-vb" > <xsl:value-of select = "@AssignedTo"
disable-output-escaping= "yes" /> </td> </tr> </xsl:template> |
上面的代码是展示的字段名,@符号后面绑定的是字段,如果要绑定参数/变量的话,要用$符号加上参数名/变量名。
(3)XSLT是扩展样式表转换语言(Extensible Stylesheet Language Transformations)的简称。
此处的<xsl:template name="dvt_1.rowview">可以理解为C#中的方法。我们查找一下是哪个方法调用了dvt_1.rowview这个方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
<xsl:template name= "dvt_1.body" > <xsl:param name= "Rows" /> <xsl:param name= "FirstRow"
/> <xsl:param name= "LastRow"
/> <xsl: for -each select = "$Rows" > <xsl:variable name= "dvt_KeepItemsTogether"
select = "false()"
/> <xsl:variable name= "dvt_HideGroupDetail"
select = "false()"
/> <xsl: if
test= "(position() >= $FirstRow and position() <= $LastRow) or $dvt_KeepItemsTogether" > <xsl: if
test= "not($dvt_HideGroupDetail)"
ddwrt:cf_ignore= "1" > <xsl:call-template name= "dvt_1.rowview"
/> </xsl: if > </xsl: if > </xsl: for -each> </xsl:template> |
上面代码我们可以看到<xsl:call-template name="dvt_1.rowview" />节点,该节点是调用其他方法。外部是<xsl:for-each select="$Rows">节点。本质上此处所有的数据都存在$Rows这个变量中,然后遍历时添加判断条件将符合条件的过滤出来。然后我们再<xsl:call-template name="dvt_1.rowview" />节点外面添加我们自己的判断条件,过滤我们需要的数据。
原文:http://www.cnblogs.com/wanren/p/3550645.html