如果我们使用第一种方法,必须对XML进行重写,用以下的形式表示,才能绑定到树形控件中去:
| <TREENODES> <treenode text="..."> <treenode text="..."> </treenode> <treenode text="..." /> ... </TREENODES> |
就是说,根结点必须是treenodes(大小写都无所谓),每个子结点必须以<treenode>的形式排列。于是,我们对原来的XML文件改写为如下的形式:
| <?xml version="1.0" encoding="UTF-8"?> <TREENODES> <treenode text="Teach Yourself Active Server_u80 ?ages 3.0 in 21 Days"> <treenode text="Price - $34.95" /> <treenode text="Authors"> <treenode text="Mitchell" /> <treenode text="Atkinson" /> </treenode> <treenode text="Year Published - 2000" /> </treenode> <treenode text="Designing Active Server Pages"> <treenode text="Price - $29.95" /> <treenode text="Authors"> <treenode text="Mitchell" /> </treenode> <treenode text="Year Published - 2000" /> </treenode> 〈/TREENODES> |
增加以下代码:
| <form runat="server"> <ie:TreeView runat="server"> <ie:TreeNode runat="server" Text="ASP.NET Books" Expanded="True" TreeNodeSrc="aspnetbooks.xml" /> </ie:TreeView> </form> |
这样就将该xml文件绑定到树形控件中去了,运行后可以看到结果:
| ASP.NET Books Teach Yourself Active Server Pages 3.0 in 21 Days Designing Active Server Pages ASP.NET: Tips, Tutorials, and Code Programming ASP.NET |
可以看到,使用第一种方法的确比较麻烦,不能对XML的结点进行筛选或者其他操作。而如果使用第二种方法的XSL,则可以根据需要随时对原来的XML进行格式的控制,十分方便。
在使用XSL时,可以用如下的方法对树形控件进行绑定:
| <form runat="server"> <ie:TreeView runat="server"> <ie:TreeNode runat="server" Text="ASP.NET Books" Expanded="True" TreeNodeSrc="aspnetbooks.xml" TreeNodeXsltSrc="aspbooks.xsl" /> </ie:TreeView> </form> |
其中,treenodexsltsrc的属性中指定要转换的XSL文件,我们设计的XSL文件如下:
| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'> <xsl:template match="/books"> <TREENODES> <xsl:for-each select="book"> <treenode> <xsl:attribute name="text"> <xsl:value-of select="title" /> </xsl:attribute> <treenode> <xsl:attribute name="text"> Price - $<xsl:value-of select="@price" /> </xsl:attribute> </treenode> <treenode text="Authors"> <xsl:for-each select="authors/author"> <treenode> <xsl:attribute name="text"> <xsl:value-of select="text()" /> </xsl:attribute> </treenode> </xsl:for-each> </treenode> <treenode> <xsl:attribute name="text"> Year Published - <xsl:value-of select="year" /> </xsl:attribute> </treenode> </treenode> </xsl:for-each> </TREENODES> </xsl:template> </xsl:stylesheet> |
在上面的XSL中,我们通过形如:
| <xsl:attribute name="text"> <xsl:value-of select="title" /> </xsl:attribute> |
的属性设置,提取XML文件中每个结点的值,将其赋值给予treenode的text属性中。当然,也可以在XSL中使用XPATH等设置要显示的结点。
运行后,结果同样与用第一种方法的一样,能正确显示树形控件,而且灵活性比较高。
更多内容请看PCdog.com--.NET基础介绍 .NET实用开发 ASP.NET应用篇专题
