C#动态生成treeview目录树

思路:

  1. 获取全量树结构数据
  2. 通过递归动态添加树子节点

动态生成目录树 TreeView

在这里我第一步就无需复述了!主要是返回如下格式数据
在这里插入图片描述

//调用生成目录树方法
DepartmentTree.initDeptTree(this.deptTv.Nodes, deptList); //初始化目录树数据

//初始化 构建 部门目录数据
public static void initDeptTree(TreeNodeCollection nodes, IList<SysDeptVo> deptList)
{
	if (null!= deptList && deptList.Count>0)
	{
		for (int i=0;i< deptList.Count;i++)
		{
			TreeNode treeNode = new TreeNode();
			SysDeptVo departVo = deptList[i];
			treeNode.Tag = departVo.id;
			treeNode.Name = departVo.label;
			treeNode.Text = departVo.label;
			nodes.Add(treeNode);
			if (null!= departVo.children && departVo.children.Count>0)
			{
				addChildNode(treeNode, departVo.children);
			}
		}
	}
}

//递归添加子节点
private static void addChildNode(TreeNode treeNode, List<SysDeptVo> children)
{
	for (int i = 0; i < children.Count; i++)
	{
		TreeNode childNode = new TreeNode();
		SysDeptVo departVo = children[i];
		childNode.Tag = departVo.id;
		childNode.Name = departVo.label;
		childNode.Text = departVo.label;
		treeNode.Nodes.Add(childNode);
		if (null != departVo.children && departVo.children.Count > 0)
		{
			addChildNode(childNode, departVo.children);
		}
	}
}

亲测有效,别忘了点赞在这里插入图片描述

//设定生成树的原始数据 void getdatable() { tblDatas.Columns.Add("groupid", Type.GetType("System.String")); tblDatas.Columns.Add("groupname", Type.GetType("System.String")); tblDatas.Columns.Add("parentid", Type.GetType("System.String")); tblDatas.Rows.Add(new object[] { "1", "机关", "0" }); tblDatas.Rows.Add(new object[] { "2", "学院", "0" }); tblDatas.Rows.Add(new object[] { "3", "教学管理中心", "1" }); tblDatas.Rows.Add(new object[] { "4", "校园管理中心", "1" }); tblDatas.Rows.Add(new object[] { "5", "数据中心", "3" }); tblDatas.Rows.Add(new object[] { "6", "信息中心", "3" }); tblDatas.Rows.Add(new object[] { "7", "一卡通", "4" }); tblDatas.Rows.Add(new object[] { "8", "保卫处", "4" }); tblDatas.Rows.Add(new object[] { "9", "信工系", "2" }); tblDatas.Rows.Add(new object[] { "10", "艺术系", "2" }); dataGridView1.DataSource = tblDatas; } //递归生成树函数 public void AddTree(int ParentID, TreeNode pNode) { DataTable dt = new DataTable(); dt = tblDatas; DataView dvTree = new DataView(dt); //过滤ParentID,得到当前的所有子节点 dvTree.RowFilter = "parentid = " + ParentID; foreach (DataRowView Row in dvTree) { TreeNode Node = new TreeNode(); if (pNode == null) { //添加根节点 Node.Text = Row["groupname"].ToString(); treeView1.Nodes.Add(Node); AddTree(Int32.Parse(Row["groupid"].ToString()), Node); //再次递归 } else { //添加当前节点的子节点 Node.Text = Row["groupname"].ToString(); pNode.Nodes.Add(Node); AddTree(Int32.Parse(Row["groupid"].ToString()), Node); //再次递归 } } } //调用递归函数在treeView1里面显示给出数据的树形图 private void button1_Click(object sender, EventArgs e) { treeView1.Nodes.Clear(); AddTree(0, (TreeNode)null); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值