Заполнение Treeview с использованием Linq - PullRequest
0 голосов
/ 04 июня 2009

Я играю с 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 Ответ

2 голосов
/ 04 июня 2009

Вот грубый способ создания узлов с заданной рекурсией (в прекрасном пюре из полу-псевдо)

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 примет это как прямой источник данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...