На багатьох форумах присвячених ASP .Net технології піднімалося питання роботи з TreeView і його динамічного заповнення, але рішення потрібного мені я так і не знайшов. Хочу представити своє рішення даної проблеми.
На багатьох форумах присвячених ASP .Net технології піднімалося питання роботи з TreeView і його динамічного заповнення, але рішення потрібного мені я так і не знайшов. Хочу представити своє рішення даної проблеми.
Створення таблиці для зберігання дерева (на прикладі дерева департаментів)
Обов'язкова умова ID рутовий Ноди має бути 0.
Реалізація
Крок перший, витягаємо все Ноди з таблиці і поміщаємо їх в OleDbDataReader.
в ньому будемо зберігати всі ноди нашого дерева.
Після цього можна додавати корінь дерева (Root)
Далі додаємо Root в наш SortedList Nodes.
Як ключ використовуємо ID Ноди.
Після цього додаємо всі інші Ноди.
Як ID для Ноди беремо PARENTID з таблиці.
У підсумку отримуємо SortedList заповнений нодамі нашого дерева.
Тепер це все треба зібрати разом.
Перебираємо все Ноди в Nodes.
Спочатку перевіряємо чи не є ця нода Root (інакше не має сенсу для Root батьком є Root).
Далі читаємо ID Ноди, ID Ноди є номером батьківської Ноди в Nodes.
Знаходимо батьківську ноду в Nodes.
Додаємо нашу ноду до батьківської.
Так в циклі проходимо по всьому Nodes.
Додаємо в наше дерево Root.
У підсумку отримуємо заповнений TreeView.