如何将列表绑定到TreeView以实现多级

时间:2014-07-21 11:41:20

标签: c# sql wpf entity-framework treeview

我想将列表绑定到TreeView。但它应该这样工作:

我使用实体框架。在最简单的情况下,我有2个表有2个关联。

客户 产品

客户与自身联系 Customer.CustomerID - Customer.ParentID 和 Product.CustomerID - Customer.CustomerID

现在我想填充TreeView并实现这样的目标:

Customer1
    SubCustomer1
        Product1
        Product2
    Product3
Customer2
    Product4
Customer3
    SubCustomer2
        Product5
    SubCustomer3
        SubCustomer4
             Product6
        Product7
    Product8

我想只看到Name属性,并以某种方式检测单击哪一个。

Customer Table有3个导航属性 制品 CustomerChildren CustomerParent

产品表有3个导航属性,但我不想在TreeView中使用它。

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

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我现在读了你写过4次的内容,但我仍然不知道你想要什么。但我想我认为有些事情我会选择:

  • 用于检测单击哪个节点:您将一个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)
}