想要形成这种效果的话,首先在数据里面建一张表
create table treedata (id number, context varchar2(50), parentid number);
id:当前的id,context当前节点的值文本,parentid代表当前节点的父节点id
insert into treedata values(1, '所有部门', 0);
insert into treedata values(2, '人事部', 1);
insert into treedata values(3, '财务部', 1);
insert into treedata values(4, '生产部', 1);
insert into treedata values(5, '车间一', 4);
insert into treedata values(6, '车间二', 4);
insert into treedata values(7, '车间三', 4);
insert into treedata values(8, '商务部', 1);
再用递归根据数据库查询的值动态绑定treeView
- public void AddTree(int ParentID, TreeNode pNode)
- {
- string sql = "select id, context, parentid from treedata";
- DataSet ds = OracleHelper.ExecuteDataset(OracleHelper.Con, CommandType.Text, sql, null);
- TreeNode tn1 = new TreeNode();
- DataView dvTree = new DataView(ds.Tables[0]);
- //过滤ParentID,得到当前的所有子节点
- dvTree.RowFilter = "[PARENTID] = " + ParentID;
- foreach (DataRowView Row in dvTree)
- {
- if (pNode == null)
- { //'?添加根节点
-
- tn1.Text = Row["ConText"].ToString();
- treeView1.Nodes.Add(tn1);
- tn1.ExpandAll();
- AddTree(Int32.Parse(Row["ID"].ToString()), tn1); //再次递归
- }
- else
- { //添加当前节点的子节点
- TreeNode tn2 = new TreeNode();
- tn2.Text = Row["ConText"].ToString();
- pNode.Nodes.Add(tn2);
- tn1.ExpandAll();
- AddTree(Int32.Parse(Row["ID"].ToString()), tn2); //再次递归
- }
- }
- treeView1.ExpandAll();
- }
应用:
- private void 人员资料管理_Load(object sender, EventArgs e)
- {
- AddTree(0, (TreeNode)null);
- treeView1.ExpandAll();//默认展开所有节点
- this.toolStripComboBox1.SelectedIndex = 0;
- }
就可以了。。。。
|