2009-06-04 73 views
0

我正在玩Linq-SQL并希望在窗体上的TreeView中显示我的数据。我也使用.net 3.5,如果这很重要。使用Linq填充树状图

现在,我的问题 - 有没有更好的方式来填充这个treeview?我现在这样做的方式是这样的(伪):

for each order 
{ 
    OrderNode = new TreeViewNode 

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

    OrdersTreeView.Add(OrderNode) 
} 

在此先感谢!

回答

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将接受此类作为直接数据源。

+0

嘿,那是比我做的更好的方式!谢谢 :) – josha76 2009-06-05 05:39:52