首页 > 数据库技术 > 详细

C# 数据库表递归生成树

时间:2014-03-01 12:11:01      阅读:1079      评论:1      收藏:0      [点我收藏+]

问题:

表如下:bubuko.com,布布扣

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

代码如下:

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);
    }
}

  最终结果,左图:

bubuko.com,布布扣

C# 数据库表递归生成树,布布扣,bubuko.com

C# 数据库表递归生成树

原文:http://www.cnblogs.com/martinlong/p/3574341.html

(1)
(1)
   
举报
评论 一句话评论(1
2016-06-16 13:29:18
亲,  dt = DB.GetTable("select deptId,parentId,deptName from dept");
    dataGridView1.DataSource = dt;中的DB 是什么意思啊
回复
 (7)
 (1)
1条  
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!