Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ASP.NET Новый топик    Ответить
 TreeView  [new]
.NET
Member

Откуда: Москва->Петушки
Сообщений: 8258
Есть таблица с колонками Id, ParentId, Name.
Как её отобразить в TreeView быстро и эффективно?

Спасибо.
1 дек 08, 17:30    [6510536]     Ответить | Цитировать Сообщить модератору
 Re: TreeView  [new]
.NET
Member

Откуда: Москва->Петушки
Сообщений: 8258
Есть какие нибудь стандартные способы решения?
Задача то, насколько я могу судить, стандартная.
У меня пока только одна мысль загрузить всю таблицу
построить на основе неё XML и загрузить XML в Tree View.
Насколько такое решение правильно и легкореализуемо?

Спасибо.
1 дек 08, 17:33    [6510560]     Ответить | Цитировать Сообщить модератору
 Re: TreeView  [new]
Владимир М.
Member

Откуда: Москва
Сообщений: 4990
Считаю, что это правильно. Я сделал также.
1 дек 08, 18:12    [6510830]     Ответить | Цитировать Сообщить модератору
 Re: TreeView  [new]
Яростный Меч
Member [скрыт]

Откуда:
Сообщений: 28907
Еще вариант - дерево подгружается по мере разворачивания. Вначале надо отобразить только корневые элементы, при первом разворачивании элемента подгружать его непосредственные чилды. Если таблица очень большая, то так будет эффективней
1 дек 08, 19:22    [6511018]     Ответить | Цитировать Сообщить модератору
 Re: TreeView  [new]
ShSerge
Member

Откуда: ʚонɔ dиw
Сообщений: 24928
Яростный Меч
...по мере разворачивания...

Это не противоречит тому, что сказал Владимир М. Я тоже делаю.
1 дек 08, 20:36    [6511157]     Ответить | Цитировать Сообщить модератору
 Re: TreeView  [new]
Даша Шулеко
Member

Откуда:
Сообщений: 90
Я для таких случаем сделала наследника TreeView, потребляющего непосредственно таблицы из SQL базы. Получившийся элемент лихо ставится на страницу.

XML на мой взгляд в этой ситуации - 5 колесо.
2 дек 08, 00:14    [6511561]     Ответить | Цитировать Сообщить модератору
 Re: TreeView  [new]
.NET
Member

Откуда: Москва->Петушки
Сообщений: 8258
Даша Шулеко,

О, вот это интересно. Тоже хочу такого наследника. Потому как задача эта, по ощущениям,
будет всплывать постоянно. А как это без XML сделать? Что там в TreeView перегрузить надо?
2 дек 08, 10:45    [6512364]     Ответить | Цитировать Сообщить модератору
 TreeView  [new]
SmSerg
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
http://smolkin.net/treeview-i-bazy-dannyx/

Данное сообщение получено с GotDotNet.Ru
2 дек 08, 11:40    [6512746]     Ответить | Цитировать Сообщить модератору
 Re: TreeView  [new]
goman01
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Надо делать рекурсивную функцию.

типа

[code]
public void BindTree(TreeNodeCollection col)
foreach(TreeNode node in col)
{
//биндим
if(node.HasChild)
{
BindTree(node>ChildNodes)
}
}
[/code]
но это обход дерева, тебе надо обойти также таблицу и построить дерево. Смысла в XML не вижу

Данное сообщение получено с GotDotNet.Ru
2 дек 08, 11:40    [6512747]     Ответить | Цитировать Сообщить модератору
 Re: TreeView  [new]
Владимир М.
Member

Откуда: Москва
Сообщений: 4990
Даша Шулеко
Я для таких случаем сделала наследника TreeView, потребляющего непосредственно таблицы из SQL базы. Получившийся элемент лихо ставится на страницу.

XML на мой взгляд в этой ситуации - 5 колесо.

При обращении к базе возможны блокировки таблиц при одновременном доступе на чтение и изменение.
В этом случае XML это как-бы слепок с запроса, в который входит множество таблиц.
Он не блокируется и отлично кэшируется.
2 дек 08, 12:18    [6513069]     Ответить | Цитировать Сообщить модератору
 Re: TreeView  [new]
.NET
Member

Откуда: Москва->Петушки
Сообщений: 8258
Всем спасибо за помощь. Благодаря вашей помощи всё сделал за полчаса, и даже успел составить
некоторое своё мнение по этому вопросу. Иногда сам удивляюсь, как быстро может полный чайник
превратится в мега-эксперта. :)

Наверное, в данном случае действительно не имеет смысла переливать данные в XML. XML имеет
смысл строить в более сложных случаях, например если у нас есть несколько таблиц связанных
между собой отношением "один ко многим" и по ним надо построить дерево. А здесь проще всего
сразу строить узлы как показано в сатье http://smolkin.net/treeview-i-bazy-dannyx/ приведённой
SmSerg, и форматировать их как хочется в зависимости от данных. А в случае с XML, боюсь,
понадобится ещё второй проход для форматирования.
Что же касается кэширования, то в данном случае ничто не мешает закэшировать саму таблицу.
Тем более что таблица займёт гораздо меньше памяти чем XML.

Спасибо.
3 дек 08, 07:46    [6516951]     Ответить | Цитировать Сообщить модератору
Все форумы / ASP.NET Ответить