2009-06-04 116 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