问题:
表如下:
第一次使用递归,请教了许多人,谢谢他们的指点。
代码如下:
|
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); }} |
最终结果,左图:

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