|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.10.2007, 23:36 | #1 |
Регистрация: 21.10.2007
Сообщений: 3
|
Как отобразить категории, имеющие вложенность произвольной глубины?!
У меня в БД таблицы продуктов, категорий. Каждый товар принадлежит к одной категории. Категории имеют вложенность произвольной глубины.
Категории надо отобразить как дерево папок. Можно ли что-то подобное сделать в гриде, я не знаю, поэтому решила использовать тривью, но т.к. никогда не пользовалась им раньше, то тут у меня ничего путного не выходит. Может подскажете, пожтолкнету меня в нужную сторону ?!! Использую firebird, к компоненты table не использую, пользую IBDataSet и т.п. В таблице категорий храню идентификатор, ссылку на родителя и наименование категории, а в таблице товаров идентификатор, ссылку на категорию, ну и наименования, цена там и т.п. Заранее спасибо! |
23.10.2007, 02:25 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Результирующий набор из таблицы категорий должен быть отсортирован по двум полям - идентификатор, ссылка на родителя. Или создайте такой составной индекс.
После этого процесс построения дерева происходит за один проход. Если вкратце: - заносим первого родителя (у него парент ноль, ведь он в корне) - смотрим, кто папа у следующего. Если первый родитель (его код надо запомнить в переменной), то добавляем папе детеныша - аналогично проверяем следующую запись, а вдруг там окажется детка детеныша? Ну, и так далее... |
23.10.2007, 09:37 | #3 |
Регистрация: 21.10.2007
Сообщений: 3
|
if DataSet_Category.FieldByName('CT_PA RENT').AsInteger = 0 then
TreeView.Items.Add(nil, DataSet_Category.FieldByName('CT_NA ME').AsString) - здесь я создала узел в корне, а вот как мне теперь ему его id присвоить? Не совсем поняла, как хранить в переменной ( Тут трабл с индексами, первая запись в таблице, она будет с parent=0 и будет корневой и в тривью индекс тож будет 1 , а вот вторая запись тоже может быть корневой, а третья дите первого, но в тривью дите будет иметь индекс 2, а у втораой корневой индекс 3. Чего-то туплю ((( Последний раз редактировалось Aska; 23.10.2007 в 10:26. |
23.10.2007, 14:36 | #4 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Ну вот пример из моей программульки:
Код:
|
31.10.2007, 01:03 | #5 |
Регистрация: 21.10.2007
Сообщений: 3
|
огромное спасибо! с деревом справилась )))
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Скрыть-Отобразить с помощью VBA | ZORRO2005 | Microsoft Office Excel | 5 | 01.09.2008 09:11 |
Подскажите, как лучше отобразить картинку! | badfilin | JavaScript, Ajax | 0 | 12.05.2008 01:34 |
Сортировка двумерного массива произвольной длины. Visual Basic | Pekc | Помощь студентам | 0 | 25.11.2007 19:30 |
отобразить query в 3-х dbgrid | Nuts | БД в Delphi | 0 | 03.09.2007 18:19 |
Отобразить имеющиеся диски | Prowler | Win Api | 4 | 22.02.2007 15:17 |