protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            foreach (Categories c in cs.findAll())
            {
                TreeNode t = new TreeNode();
                t.Text = c.Name;
                t.Value = c.Id;
                TreeView1.Nodes.Add(t);
                addchildNodes(t);
            }
        }    }    private void addchildNodes(TreeNode tn)
    {
        string pid = tn.Value;
        foreach (Categories c in cs.find(pid))
        {
            TreeNode t = new TreeNode();
            t.Text = c.Name;
            t.Value = c.Id;
            TreeView1.Nodes.Add(t);
            addchildNodes(t);
        }
    }

解决方案 »

  1.   

    附带两张图 sql语句和数据库表,我写的那里错了 初学者...
      

  2.   

    TreeView1.Nodes.Add(t);
    这句代码的意思,是在树控件里添加根节点;
    也就是说,无论你递归多少次,你都不可能添加子节点;添加子节点的语句,我凭印象,大概记得如下
    TreeView1.Nodes.Find(pid,true)[0].Nodes.Add(t);意义为:首先在树控件中找到待添加节点的父节点([0]的意义为查找到的第一个符合条件的节点),然后在将待添加节点添置为该节点的直接子节点。
      

  3.   

    private void addchildNodes(TreeNode tn)
      {
      string pid = tn.Value;
      foreach (Categories c in cs.find(pid))
      {
      TreeNode t = new TreeNode();
      t.Text = c.Name;
      t.Value = c.Id;
      tn.Nodes.Add(t);
      addchildNodes(t);
      }
      }
      

  4.   

     
    擦,搞错标签了,
    private void addchildNodes(TreeNode tn)
      {
      string pid = tn.Value;
      foreach (Categories c in cs.find(pid))
      {
      TreeNode t = new TreeNode();
      t.Text = c.Name;
      t.Value = c.Id;
      tn.Nodes.Add(t);
      addchildNodes(t);
      }
      }