id(标识列) deptId(varchar) parentId(varchar) deptName(varchar)
1 NO1 空 湖南学院
2 NO2 NO1 软件工程系
3 NO3 NO1 信息工程系
4 NO2.1 NO2 教务处
5 NO3.1 NO3 系主任
6 NO3.2 NO3 办公室
------------------------------------------------------------------------------------、
形成树如下:
湖南学院
软件工程系
教务处
信息工程系
系主任
办公室
----------------------------------------------------------------
我是菜,,请问如何生成树。。。坐等。。谢谢。。
deptId 与 parentId 是字符类型,我搞不来,求解。。老提示找不到根节点。
1 private DataTable dt = null; 2 private void Form1_Load(object sender, EventArgs e) 3 { 4 //加载数据表 5 dt = DB.GetTable("select deptId,parentId,deptName from dept"); 6 dataGridView1.DataSource = dt; 7 8 BindRoot(); 9 } 10 //获取根节点 11 private void BindRoot() 12 { 13 //从dt表中查询出parentId='ABC'的行 14 DataRow[] ro = dt.Select("parentId='ABC'"); 15 foreach (DataRow dr in ro) 16 { 17 //if (dr["parentId"].ToString() == "ABC") 18 //{ 19 TreeNode node = new TreeNode(); 20 node.Tag = dr; 21 node.Text = dr["deptName"].ToString(); 22 treeView1.Nodes.Add(node); 23 AddChild(node); 24 //} 25 } 26 } 27 //绑定子节点 28 private void AddChild(TreeNode node) 29 { 30 DataRow dr2 = (DataRow)node.Tag;//获取与根节点关联的数据行 31 string pId = dr2["deptId"].ToString();//获取根节点的deptId 32 33 //从dt表中查询出parentId=deptId的节点 34 DataRow[] rows = dt.Select("parentId='"+pId+"'"); 35 if (rows.Length == 0) 36 return; 37 foreach (DataRow drow in rows) //再次遍历,添加子节点 38 { 39 TreeNode node3 = new TreeNode(); 40 node3.Tag = drow; 41 node3.Text = drow["deptName"].ToString(); 42 node.Nodes.Add(node3); 43 //递归 44 AddChild(node3); 45 } 46 }
谢谢,搞出来了