树菜单menuTree父节点parentNode
子节点childNode如何用递归算法生成一个无限级的菜单呢? public class WebForm1 : System.Web.UI.Page
{
protected Prolink.Web.UI.TreeView menuTree;
private Prolink.Web.UI.DefaultTreeNode parentNode = null;
private Prolink.Web.UI.DefaultTreeNode childNode = null;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("Menu.xml")); XmlNode menuNode = doc.SelectSingleNode("menu");
RenderParentNode(menuNode);
} private void RenderParentNode(XmlNode menuNode)
{
foreach(XmlNode xn in menuNode.ChildNodes)
{
parentNode = new Prolink.Web.UI.DefaultTreeNode(xn.Attributes["caption"].Value,false);
RenderChildNode(xn);
menuTree.Nodes.Add(parentNode);
}
} private void RenderChildNode(XmlNode node)
{
foreach(XmlNode xn in node.ChildNodes)
{
childNode = new Prolink.Web.UI.DefaultTreeNode(xn.Attributes["caption"].Value,false);
if (xn.HasChildNodes) 
{
RenderChildNode(xn);
childNode.Nodes.Add(childNode);
}
parentNode.Nodes.Add(childNode);
}
}

解决方案 »

  1.   

    我这样写会是死循环
    <?xml version="1.0" encoding="utf-8" ?> 
    <menu>
      <menu-root caption="China" url="" target="" role="0">
        <menu-node caption="BeiJing" url="BeiJing.aspx" target="" role="0"></menu-node>
        <menu-node caption="ShangHai" url="ShangHai.aspx" target="" role="0"></menu-node>
        <menu-root caption="FuJian" url="" target="" role="0">
          <menu-node caption="FuZhou" url="FuZhou.aspx" target="" role="0"></menu-node>
          <menu-node caption="PuTian" url="PuTian.aspx" target="" role="0"></menu-node>
        </menu-root>
      </menu-root>
      <menu-root caption="America" url="" target="" role="0,1">
        <menu-node caption="Washington" url="Washington.aspx" target="" role="0,1"></menu-node>
        <menu-node caption="NewYork" url="NewYork.aspx" target="" role="0,1"></menu-node>
      </menu-root>
      <menu-root caption="Japan" url="" target="" role="0,1,2">
        <menu-node caption="Tokyo" url="Tokyo.aspx" target="" role="0,1,2"></menu-node>
        <menu-node caption="Ghost" url="Ghost.aspx" target="" role="0,1,2"></menu-node>
      </menu-root>
    </menu>
      

  2.   

    Prolink.Web.UI.DefaultTreeNode是继承System.Windows.Forms.TreeNode
      

  3.   

    public void co(string a)
    {
        if(条件)
        {
          this.co(a);
        }
    }注意这里的条件,否则会死循环