如何将列表绑定到TreeView以实现多级
本文关键字:TreeView 实现 多级 绑定 列表 | 更新日期: 2023-09-27 18:14:08
我想将list绑定到TreeView。但是它应该是这样工作的:
我使用实体框架。在最简单的情况下,我有两个表和两个关联。
客户产品
客户与自身相连客户。CustomerID -客户。ParentID和产品。CustomerID -客户。CustomerID
现在我想填充TreeView并实现这样的东西:
Customer1
SubCustomer1
Product1
Product2
Product3
Customer2
Product4
Customer3
SubCustomer2
Product5
SubCustomer3
SubCustomer4
Product6
Product7
Product8
我想只看到Name属性,并以某种方式检测哪个被单击。
Customer Table有3个导航属性产品CustomerChildrenCustomerParent
Product table有3个导航属性,但是我不想在TreeView中使用它。
在运行时,我想点击一些产品,检测产品被选中(停止如果客户被选中),然后根据其他控件进行一些数据库修改。
有人能帮忙吗?
我已经把你写的东西读了四遍了,但我仍然不知道你到底想要什么。但是我想有些东西我觉得我学到了:
- 用于检测哪个节点被点击:你添加一个NodeMouseClick事件到treeView和得到你想要的节点与e.Node,然后如果你想,你可以只是e.Node. name获取名称,并检查它是否有"产品"在它,否则你也可以分配一个关键到每个节点,并通过它检查。我不太明白你说的停止是什么意思,如果客户被选中,停止程序?
- 为填充treeView从数据库中读取数据并将其添加到一个类中,看起来像这样
.
public class className{
public string nodeName;
public className parent;
public List<className> child;
}
然后用一个从这个类的根开始的递归函数填充treeView:
public void populateTree(className c){
treenode tn;
if(c doesnt exists in treeView)
tn = new node c in treeview
else
tn = node index of c
foreach child in c.child
TreeNode tnChild = add every child of c to this node
populateTree(child)
}