<?xml version="1.0" encoding="utf-8" ?>
<root>
<catalog>asp.net
<catalog>XML
<catalog>reader</catalog>
<catalog>writer</catalog>
</catalog>
<catalog>Pagelife Circle</catalog>
</catalog>
<catalog>Ajax</catalog>
<catalog>Sql</catalog>
</root>
用TreeView控件绑定以上xml文件,我希望的是:+ asp.net
+ xml
+ reader
+ writer
+ pagelife circle
……但实际结果是:
+ asp.net xml reader writer
+ xml reader writer
+ reader
+ writer
+ pagelife circle
……也就是父节点在一行中就显示了所有的子节点内容。如何处理呢?我希望是做无限分级,想windows文件资源管理器那样。我的代码:<body>
<form id="form1" runat="server">
<div>
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/XMLFile.xml">
</asp:XmlDataSource>
<asp:TreeView ID="TreeView1" runat="server" AutoGenerateDataBindings="False"
DataSourceID="XmlDataSource1" ShowLines="True">
<DataBindings>
<asp:TreeNodeBinding DataMember="root" />
<asp:TreeNodeBinding DataMember="catalog" TextField="#InnerText" />
</DataBindings>
</asp:TreeView>
</div>
</form>
</body>
用的TextField="#InnerText",不知道有没有问题?
System.Xml.XmlDocument dom = new System.Xml.XmlDocument();
dom.LoadXml(xml);
foreach (System.Xml.XmlNode node in dom.ChildNodes)
{
if(node.Name !="xml")
{
}
}
void GetNodeText(System.Xml.XmlNode node)
{
string str=node.InnerText;
if (node.HasChildNodes)
{
foreach (System.Xml.XmlNode n in node.ChildNodes)
{
}
}
}
也可先遍历1几层,再点击时加载其他层数据
参考
为什么还要设置treeviw的 <DataBindings>
<asp:TreeNodeBinding DataMember="root" />
<asp:TreeNodeBinding DataMember="catalog" TextField="#InnerText" />
</DataBindings>
<?xml version="1.0" encoding="utf-8" ?>
<root >
<catalog value="asp.net">
<catalog value="XML">
XML
<catalog value="reader">reader</catalog>
<catalog value="writer">writer</catalog>
</catalog>
<catalog value="Pagelife Circle">Pagelife Circle</catalog>
</catalog>
<catalog value="Ajax">Ajax</catalog>
<catalog value="Sql">Sql</catalog>
</root>
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1">
<DataBindings>
<asp:TreeNodeBinding DataMember="catalog" TextField="value" />
<asp:TreeNodeBinding DataMember="catalog" TextField="value" />
<asp:TreeNodeBinding DataMember="catalog" TextField="value" />
</DataBindings>
</asp:TreeView>
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/XMLFile.xml"></asp:XmlDataSource>
xml文件: <catalog name="reader" value="value"></catalog>aspx文件:<asp:TreeNodeBinding DataMember="catalog" TextField="name" />