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