<?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",不知道有没有问题?

解决方案 »

  1.   

    递归绑定数据
    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几层,再点击时加载其他层数据
    参考
      

  2.   

    你用xmldatasource直接绑定就行了
    为什么还要设置treeviw的  <DataBindings>
                    <asp:TreeNodeBinding DataMember="root" />
                    <asp:TreeNodeBinding DataMember="catalog" TextField="#InnerText" />
                </DataBindings>
      

  3.   

    楼上都说了,更多TreeView的也可以参照一下:http://www.bbs180.com/topictag-45.aspx
      

  4.   

    XMLFile.xml修改一下加个value:
    <?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>
      

  5.   

    正解:
    xml文件:      <catalog name="reader" value="value"></catalog>aspx文件:<asp:TreeNodeBinding DataMember="catalog" TextField="name" />