views:

839

answers:

1

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!

+2  A: 

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.

CRice
Hey, that's a better way than what I was doing! Thanks :)
Dabas