想要形成这种效果的话,首先在数据里面建一张表
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; }
就可以了。。。。