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

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

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

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

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

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

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

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


person Hanno Fietz    schedule 17.01.2009    source источник


Ответы (1)


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

person David Hanak    schedule 29.01.2009
comment
Почему, черт возьми, этот класс не является частью общедоступного API? У меня очень похожая путаница. - person Jason Boyd; 21.09.2011