josha76
josha76

Reputation: 131

Populating Treeview using Linq

I'm playing with Linq-SQL and would like to display my data in a TreeView on a form. I'm also using .net 3.5, if that matters.

Now, my question - is there a better way to populate this treeview? The way I'm doing it now is like this (psuedo):

for each order
{
  OrderNode = new TreeViewNode

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

  OrdersTreeView.Add(OrderNode)
}

Thanks in advance!

Upvotes: 0

Views: 3097

Answers (1)

CRice
CRice

Reputation: 12567

Here is a rough way to create the nodes given recursion (in lovely mashed up half-psuedo)

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);
            }
        }
    }

Find your root node and call the method.

If you use the interfaces IHierarchyData and IHierarchicalEnumerable and build the nodes with classes implementing these the treenode will accept this as a direct data source.

Upvotes: 2

Related Questions