我现在有一个List的对象集合,需要把这个集合递归绑定到treeview上,求各位大虾帮帮忙!急……

feng_6331 2011-11-01 02:25:51
Group对象如下
ID Name ParentID
0 南方动力
1 411车间 0
2 军代表室 0
3 信息中心 0
4 质保室 0
5 车间1 1
6 车间2 1
7 车间3 1
8 1号生产线 5
9 2号生产线 5
10 生产1组 8
11 生产2组 8
12 生产1组 9
13 生产2组 9

大概的数据就是这样了,求大家帮忙说下
...全文
259 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhenhunfan4 2011-11-01
  • 打赏
  • 举报
回复
其他的楼上已经有人回答了
zhenhunfan4 2011-11-01
  • 打赏
  • 举报
回复
我晕,treeview控件在很多项目里有
wpf里的最简单了,只需要准备好一个treeview里的数据模板就可以了
MKing0412 2011-11-01
  • 打赏
  • 举报
回复

public void 初始化结构树()
{
this._tvw_部门结构树.Nodes.Clear();

//获取组织关系模型类
业务对象模型类 cls_模型类 = 全局环境类.获取模型类("Organ");
业务对象模型类 cls_关系模型类 = 全局环境类.获取模型类("Organ Tree");
if (cls_模型类 == null || cls_关系模型类 == null)
return;

List<组织信息类> lst_根部门 = 组织信息类.获取首个组织对象();
if (lst_根部门 == null)
return;

foreach (组织信息类 cls_根部门信息 in lst_根部门)
{
TreeNode trn_根节点 = 形成树节点(cls_根部门信息);
if (trn_根节点 != null)
{
trn_根节点.ImageIndex = 0;
trn_根节点.SelectedImageIndex = 0;
this._tvw_部门结构树.Nodes.Add(trn_根节点);
递归加载组织结构(trn_根节点, cls_模型类, cls_关系模型类, cls_根部门信息);
}
}
}

private void 递归加载组织结构(TreeNode trn_父节点, 业务对象模型类 cls_模型类, 业务对象模型类 cls_关系模型类, 组织信息类 cls_组织信息)
{
List<组织信息类> lst_子组织对象 = null;
关系管理泛型基类 cls_关系泛型基类 = new 关系管理泛型基类();
cls_关系泛型基类.获取父对象关联的子(cls_组织信息, cls_关系模型类, cls_模型类, out lst_子组织对象);

foreach (组织信息类 cls_子组织信息 in lst_子组织对象)
{
if (cls_子组织信息 == null)
continue;

TreeNode trn_子节点 = 形成树节点(cls_子组织信息);
if (trn_父节点 == null)
continue;

trn_子节点.ImageIndex = 1;
trn_子节点.SelectedImageIndex = 1;
trn_父节点.Nodes.Add(trn_子节点);

递归加载组织结构(trn_子节点, cls_模型类, cls_关系模型类, cls_子组织信息);
}
}

private TreeNode 形成树节点(组织信息类 cls_组织对象)
{
if (cls_组织对象 == null)
return null;

TreeNode trn_组织节点 = new TreeNode(cls_组织对象.str_部门名称);
trn_组织节点.Tag = cls_组织对象;
trn_组织节点.ImageIndex = 0;

return trn_组织节点;
}


我们之前写的递归加载组织树,给你看看。
wenfeng1 2011-11-01
  • 打赏
  • 举报
回复

private List<Group> list;
public void AddTree(TreeNode parentNode, int parentId)
{
var selectedList = list.FindAll(item => item.ParentId == parentId);
foreach (var group in selectedList)
{
var node = parentNode.Nodes.Add(group.ID.ToString(), group.Name);
AddTree(node, group.ID);
}
}
wnyxy001 2011-11-01
  • 打赏
  • 举报
回复

List<Group>group=new List<Group>();
for (int i = 0; i < group.Count();i++ )
{
if (group[i].ParentID!="")
{
TreeNode t0= treeView1.Nodes.Find(group[i].ParentID,true)[0];
if(t0==null)
{
treeView1.Nodes.Add(group[i].id.ToString(),group[i].Name);
}
else
{
t0.Nodes.Add(group[i].id.ToString(),group[i].Name);
}
}
else
{
treeView1.Nodes.Add(group[i].id.ToString(),group[i].Name);
}
}

没测过 不过觉得思想是对的
wenfeng1 2011-11-01
  • 打赏
  • 举报
回复
等会 我给你写一个样例代码
wenfeng1 2011-11-01
  • 打赏
  • 举报
回复
我知道了 你的有父子结构。
wenfeng1 2011-11-01
  • 打赏
  • 举报
回复
你想实现什么呢?你标题说把这个绑定到TreeView上
feng_6331 2011-11-01
  • 打赏
  • 举报
回复
feng_6331 2011-11-01
  • 打赏
  • 举报
回复
额,这个竟然自动清除空格了
feng_6331 2011-11-01
  • 打赏
  • 举报
回复
不是的,树结构是这样的


南方动力
411车间
车间1
1号生产线
生产1组
生产2组
2号生产线
生产1组
生产2组
车间2
车间3
军代表室
信息中心
质保室
wenfeng1 2011-11-01
  • 打赏
  • 举报
回复
不好意思,应该是下面的才对
foreach(var group in list)
{
treeview.Nodes.Add(group);
}
wenfeng1 2011-11-01
  • 打赏
  • 举报
回复
foreach(var group in list)
{
treeview.Items.Add(group);
}
不就这样行了

110,544

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧