C# 数据库表递归生成树

问题:

表如下:

第一次使用递归,请教了许多人,谢谢他们的指点。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
private DataTable dt = null;
private void Form1_Load(object sender, EventArgs e)
{  
    //加载数据表
    dt = DB.GetTable("select deptId,parentId,deptName from dept");
    dataGridView1.DataSource = dt;
 
    BindRoot();
}
//获取根节点
private void BindRoot()
{
    //从dt表中查询出parentId=‘ABC‘的行
    DataRow[] ro = dt.Select("parentId=‘ABC‘");
    foreach (DataRow dr in ro)
    {
        //if (dr["parentId"].ToString() == "ABC")
        //{
        TreeNode node = new TreeNode();
        node.Tag = dr;
        node.Text = dr["deptName"].ToString();
        treeView1.Nodes.Add(node);
        AddChild(node);
        //}
    }
}
//绑定子节点
private void AddChild(TreeNode node)
{
    DataRow dr2 = (DataRow)node.Tag;//获取与根节点关联的数据行
    string pId = dr2["deptId"].ToString();//获取根节点的deptId
 
    //从dt表中查询出parentId=deptId的节点
    DataRow[] rows = dt.Select("parentId=‘"+pId+"‘");
    if (rows.Length == 0)
        return;
    foreach (DataRow drow in rows) //再次遍历,添加子节点
    {
        TreeNode node3 = new TreeNode();
        node3.Tag = drow;
        node3.Text = drow["deptName"].ToString();
        node.Nodes.Add(node3);
        //递归
        AddChild(node3);
    }
}

  最终结果,左图:

C# 数据库表递归生成树,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。