Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » dxDbTreeView

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

alexnkn

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!  
Я использую приобретенный давно компонент dxDbTreeView. Компонент мне очень нравится, но недавно столкнулся с одной проблемой при использовании бд firebird. Есть стандартная древовидная таблица (ID, Parent, Name). К таблице подключен датасет (pFIBDataSet), к которому подключен dxDbTreeView. Дерево успешно выстраивается. Проблема в том, что после добавления новых узлов, обновление дерева не корректно отображается. Некоторые новые узлы после вставки данных в древовидную таблицу сразу отображаются раскрытыми, некоторые свернутыми.. Обновление dxDbTreeView после вставки записей произвожу выключением и включением датасета. Мне нужно чтобы после добавления новых веток открывались именно только что добавленные. Не подскажете в каком направлении копать)?

Всего записей: 4 | Зарегистр. 26-09-2013 | Отправлено: 15:50 26-09-2013
Dmitry

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alexnkn
 
Не уверен, но может делать добавленную запись текущей в датасете после его повторного открытия.

Всего записей: 81 | Зарегистр. 24-09-2003 | Отправлено: 16:36 26-09-2013
alexnkn

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вариант с текущей записью не проходит.  Я уже всякие варианты пробовал..

Всего записей: 4 | Зарегистр. 26-09-2013 | Отправлено: 18:34 26-09-2013
Dmitry

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Т.е. если я правильно понял, то нужно все узлы свернуть, а вновь добавленный развернуть и сделать текущим?
Тогда так:
 
tvTreeData.Items.BeginUpdate();
dstTreeData.Close();
dstTreeData.Open();
tvTreeData.FullCollapse();
tvTreeData.Items.EndUpdate();
dstTreeData.Locate('<Поле ID>', <Значение ID добавленного узла>, []);

Всего записей: 81 | Зарегистр. 24-09-2003 | Отправлено: 09:32 27-09-2013
alexnkn

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...

Всего записей: 4 | Зарегистр. 26-09-2013 | Отправлено: 15:28 27-09-2013 | Исправлено: alexnkn, 15:31 27-09-2013
Dmitry

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Теоретически между Items.BeginUpdate/Items.EndUpdate дерево не должно перерисовываться (вздрагивать). Или оно вздрагивает именно после вставки? Тогда можно попытаться и вставку завернуть в BeginUpdate/EndUpdate.  
Почему сразу после открытия датасета оказываются развернутыми еще часть узлов, не относящихся к текущей записи, я не знаю. Можно попытаться порыться в исходниках самого dxDBTreeView если это так важно.

Всего записей: 81 | Зарегистр. 24-09-2003 | Отправлено: 15:37 27-09-2013
alexnkn

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, буду дальше изучать компонент

Всего записей: 4 | Зарегистр. 26-09-2013 | Отправлено: 15:40 27-09-2013 | Исправлено: alexnkn, 13:54 28-11-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » dxDbTreeView


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru