2013-09-09 5 views
2

Я добавляю узлы дерева к TreeView программно на основе значений из БД.Поиск конкретного узла дерева в TreeView

Мне нужно добавить дочерние узлы в эти узлы раньше. Единственный способ найти их - myReportsNode.ChildNodes[int index], но эта информация бесполезна для меня, так как мне нужно найти их по их значению или уникальный идентификатор.

FindNode не является хорошим вариантом, так как я не знаю точно, где они находятся, и поиск каждого узла через itarating через дерево является пустой тратой. Я, однако, словарь для узлов.

Любые идеи?

ответ

0

Вам необходимо использовать обход дерева. Если есть какой-то порядок, вы можете убедиться, что они загружены в дерево, отражающее это упорядочение, и вы можете использовать поиск по глубине и иметь логарифмическую сложность (каждый бит такой же эффективный, как древесный словарь). Словарь узлов будет пустой тратой памяти, поскольку у вас уже есть древовидная структура, которую вы можете использовать, то есть если есть какой-то порядок.

Если вы дадите нам какую-то идею о том, как данные находятся в дереве, я мог бы помочь еще больше.

+1

Спасибо. Вы поместили меня в правильное направление для подходящего решения. Я просто заказал данные в своей хранимой процедуре и создал древовидное представление на основе этого порядка. – vadimtar

0

Используйте стратегию использования трех четырех столбцов в таблице базы данных.

1) nodeId 
2) nodeText 
3) nodeValue 
4) parentId 

Когда узел щелкнул, отправить запрос через AJAX, чтобы найти, если этот идентификатор имеет ребенка, если да, то привести его Чайлдс и добавить ниже нее. Еще никто не нашел ребенка, нет необходимости добавлять.