c#——Winform TreeView 赋值(id,name,pid)类型数据
2016-07-28 14:02
495 查看
没想到给treeview赋值这么麻烦
还要用递归
不想多说,直接上代码
presenter中的方法
以上 就可以将ID TERM PID 结构的数据赋值给treeview了
然后再来个买一送一
树节点赋值这么麻烦,怎么吧一棵树的值付给另一棵树呢,难道还要循环读出循环写入
不用不用,这样写~~~
还要用递归
不想多说,直接上代码
var dgvTree = e.Control as DataGridViewTreeViewEditingControl; var items = _presenter.GetPtTree(); //得到所有父节点为null的形成的数组 var rows = items.Where(w => w.PID == ""); if (dgvTree == null) return; dgvTree.TreeView.Nodes.Clear(); //遍历根节点数组 foreach (var row in rows) { var tmpNd = new TreeNode { Name = row.ID, Text = row.Term }; //给根节点赋值 //将节点加入到树中 dgvTree.TreeView.Nodes.Add(tmpNd); //递归加入此根节点的子节点 _presenter.InitTreeView(tmpNd.Nodes, tmpNd.Name, items); }
presenter中的方法
/// <summary> /// 初始化treeview /// </summary> /// <param name="nodes">节点集合</param> /// <param name="pid">父id</param> /// <param name="items">读取的数据库内容</param> public void InitTreeView(TreeNodeCollection nodes, string pid, List<TreeItem> items) { var service = WorkItem.RootWorkItem.Services.Get<IResourceDescService>(); service.InitTreeView(nodes, pid, items); }服务中的递归方法
public void InitTreeView(TreeNodeCollection treeNodeCollection, string p, List<TreeItem> items) { //取得以此节点为父节点的数据行 var rows = items.Where(w => w.PID == p); foreach (var row in rows) { //给根节点赋值 var tmpNd = new TreeNode { Name = row.ID, Text = row.Term }; //将节点加入到树中 treeNodeCollection.Add(tmpNd); //递归加入此节点的子节点 InitTreeView(tmpNd.Nodes, tmpNd.Name, items); } }
以上 就可以将ID TERM PID 结构的数据赋值给treeview了
然后再来个买一送一
树节点赋值这么麻烦,怎么吧一棵树的值付给另一棵树呢,难道还要循环读出循环写入
不用不用,这样写~~~
TreeView tv1=new TreeView(); TreeView tv2=new TreeView(); tv2.Nodes.Add((TreeNode)tv1.Nodes[0].Clone());
相关文章推荐
- C# 滚动字幕的实现
- c# 枚举
- C# DEV,treelist,实现分层及TreeList常用用法
- C#未将对象引用设置到对象的实例
- C# 创建、载入XML文件学习笔记
- C#实现文件增量备份
- C# using 三种使用方式
- C#识别验证码图片通用类(附源码下载)
- C#图形工具
- C#工程 引用了库,但是找不到命名空间
- c# 对DataTable各种常用操作的源代码DataTableHelper
- C#必须掌握的系统类
- c# datetime与 timeStamp时间戳 互相转换
- C#大小写字母转换函数
- C#Nlog配置文件 万能模板 输出到控制台及文件
- C#的第8节课
- C# foreach循环内不要修改集合
- c# 精致时钟的代码
- C#新手入门代码 控制台清屏
- C++ 模板和 C# 泛型之间的区别(C# 编程)