2011-01-06 7 views
0

Мне нужно заполнить элемент управления TreeView для отображения данных иерархии из базы данных.TreeView Как создать узел программно

Порядок иерархии был продиктован колонкой в ​​моей БД под названием «CategoryNodeString» и «CategoryNodeLevel».

/= Корень

Пример:

CategoryId CategoryNodeString CategoryNodeLevel 
1   /     0 
2   /1/     1 
3   /2/     1 
4   /1/1/    2 
5   /1/2/    2 
6   /1/1/1    3 

Можете ли вы предоставить мне образец кода, чтобы начать? Спасибо, парни!

+0

Почему вы отправили один и тот же вопрос дважды? http://stackoverflow.com/questions/4613607/bound-a-treeview-control-to-user-defined-complex-type-using-ef-4 –

+0

Привет, здесь я не предполагаю, что EF не был выбран. Это аналогичная более простая версия. Есть ли у вас какие-либо идеи? Спасибо за сообщение yuor – GibboK

ответ

1

С помощью этого источника данных выполнить сборку древовидной структуры непросто. Сложность, потому что между узлами не существует отношений между родителями. CategoryNodeString следует читать идентификатор родительского CategoryId следующим образом:

CategoryId  ParentCategoryId Node Display String 
0    0     Parent 
1    0     SubParent 
2    0     SubParent 
3    1     Child 
4    2     Child 

Из этих данных можно получить следующую структуру:

0 (Parent) 
+--1 (SubParent) 
| +--3 (Child) 
+--2 (SubParent) 
| +--4 (Child) 

и так далее. Построение этого дерева может быть выполнено (полу) рекурсивно с помощью Linq-to-objects, исследуя parentCategoryId каждого узла. Начните с поиска самого низкого значения parentCategoryId. Создайте этот узел (используя объект System.Web.UI.TreeNode). Затем добавьте к нему всех детей, которые также разделяют эту parentCategoryId. Затем повторите процесс (следовательно, рекурсию) для каждого вновь присоединенного ребенка.

+0

Спасибо, я действительно высоко ценю ваш комментарий, на данный момент я понял решение, используя EF 4. Я отправлю решение здесь, как только я смогу поблагодарить – GibboK

Смежные вопросы