您的位置:首页 > 编程语言 > C#

c#——Winform TreeView 赋值(id,name,pid)类型数据

2016-07-28 14:02 495 查看
没想到给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());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: