使用Linq填充Treeview

时间:2009-06-04 04:25:06

标签: .net sql winforms linq treeview

我正在使用Linq-SQL,并希望在表单上的TreeView中显示我的数据。我也在使用.net 3.5,如果这很重要的话。

现在,我的问题 - 是否有更好的方法来填充这个树视图?我现在这样做的方式就像这样(伪装):

for each order
{
  OrderNode = new TreeViewNode

  for each product in order
  {
     ProductNode = new TreeViewNode
     OrderNode.Add(ProductNode)
  }

  OrdersTreeView.Add(OrderNode)
}

提前致谢!

1 个答案:

答案 0 :(得分:2)

这是一个粗略的方法来创建给定递归的节点(在可爱的混合半假设中)

private void CreateNodeAndInvestigateChildrenOfNode(HierarchyData data)
    {
        //does this node have children???
        if (data.HasChildren)
        {
            //get children
            IEnumerable<ChildRecord> childUsers = GetChildRecordsForData(data);
            foreach (child in childUsers)
            {
      HierarchyData newNode = new HierarchyData ();
                newNode.ParentNode = data;
                newNode.ThisData = child;
                data.ChildNodes.Add(newNode);

                CreateNodeAndInvestigateChildrenOfNode(newNode);
            }
        }
    }

找到您的根节点并调用该方法。

如果使用接口IHierarchyData和IHierarchicalEnumerable并使用实现这些的类构建节点,则treenode将接受此作为直接数据源。