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