代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

您现在的位置是:首页>_C#

怎么递归加添TreeView节点

发布时间:2019-11-22浏览(1629)

    如何递归加添TreeView节点
    private void AddNode(string node)
      {
      for (int i = 0; i < 10; i++)
      {
      this.treeView1.Nodes.Add(i.ToString());
      AddNode(i.ToString());
      }
      }
    我要的是父节点是1-9,子节点也是1-9,怎么办?谢谢

    ------解决方案--------------------
    什么意思,1-9,讲明白点

    ------解决方案--------------------
    LZ的表结构设计好了吗
    Info:
    id int
    name varchar(10)
    parentId int

    如:
    id name parentId
    1 a 0
    2 c 0
    3 f 1
    4 h 2

    然后,可以先生成父节点(parentId=0处),再递归调用生成子节点
    C# code
    
    //生成父节点
    private void CreateRoot()
    {
      DataTable dt = new DataTable();
      //adapter.Fill(dt);
      if(dt.Rows.Count > 0)
      {
        foreach(DataRow dr in dt.Rows)
        {
          string id = dr["id"].ToString();
          string name = dr["name"].ToString();
          TreeNode root = new TreeNode(id,name);//也可只用Text,不用Value
          TreeView1.Nodes.Add(root);
          AddChildNode();//也可逐步加载,如果节点很多的话
        }
      }
    }
    
    //递归调用生成子节点
    private void AddChildNod(TreeNode parentNode)
    {
      //添加当前节点的子节点
      //TreeNode childNode = new ChildNode();
      //parentNode.ChildNodes.Add(childNode);
    
      //递归调用,如果下面还有子节点的话
      //AddChildNode(childNode);
    }
    
    ------解决方案--------------------
    private void InitTree (TreeNodeCollection Nds,string parentId)
    {
    DataView dv=new DataView();
    TreeNode tmpNd;
    string intId;
    dv.Table=ds.Tables["表名"];
    dv.RowFilter="ParentId='"+parentId+"'";
    foreach(DataRowView drv in dv)
    {
    tmpNd=new TreeNode();
    tmpNd.Tag=drv["NodeID"].ToString();
    tmpNd.Text=drv["Name"].ToString();
    Nds.Add(tmpNd);
    intId=drv["ParentId"].Tostring();
    InitTree(tmpNd.Nodes,tmpNd.Tag);
    }
    }

    NodeID Name ParentId 
    1 a 0 
    2 c 0 
    3 f 1 
    4 h 2