Каков наилучший способ связать элемент управления Flex Tree с деревом, хранящимся в базе данных? - PullRequest
2 голосов
/ 18 января 2009

У меня есть локальная база данных SQLite, которая содержит дерево (как вложенные множества). В приложении AIR я хочу отобразить это дерево в древовидном элементе управления и предоставить средства для изменения имен узлов и копирования, перемещения, добавления или удаления узлов.

Теперь я немного обдумываю, куда поместить код. Очевидно, у меня есть класс, который будет выполнять такие операции, как загрузка / обновление / вставка / удаление с базой данных. Это приведет к загрузке всего дерева в некоторую переменную хранения и сохранению изменений, внесенных пользователем, в базу данных.

Должен ли этот класс быть dataProvider, dataDescriptor или расширением самого элемента управления Tree? И когда пользователь запрашивает операцию, такую ​​как добавление узла, должно ли это обновить dataProvider и позволить обработчику базы данных реагировать на событие, или он должен вызвать метод обработчика базы данных, а затем обновить dataProvider? Я бы сказал, что последнее лучше, потому что легче не обновлять данные Дерева, если что-то пойдет не так с запросом db.

Есть методы для добавления и удаления узлов в DefaultDataDescriptor и в классе Tree (защищенные методы в последнем), я должен использовать / расширять их или игнорировать их?

Причина, по которой меня это смущает, заключается в том, что, согласно документам, элемент управления Tree использует объект, хранящийся в его свойстве dataDescriptor, для анализа и манипулирования фактическими данными, которые хранятся в его свойстве dataProvider.

Это, кажется, имеет смысл, пока вы не поймете, что, если вы не подклассифицируете его, никогда не будет управлять элементом управления Tree (кроме перетаскивания, если он включен), и это не dataDescriptor, либо . Скорее во всех примерах манипулирование данными происходит непосредственно через объект dataProvider, и это вызывает обработчики событий в элементе управления Tree.

Что я здесь не понимаю?

1 Ответ

1 голос
/ 29 января 2009

Взгляните на mx.controls.treeClasses.HierarchicalCollectionView. Он не является частью общедоступного API, но его полный источник доступен как часть Flex. Контроллер дерева использует этот класс для обработки различных источников данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...