如何将列表绑定到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中使用它。

在运行时,我想点击一些产品,检测产品被选中(停止如果客户被选中),然后根据其他控件进行一些数据库修改。

有人能帮忙吗?

如何将列表绑定到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)
}