我有一个包含树的本地SQLite数据库(作为嵌套集)。在AIR应用程序中,我想在树控件中显示该树,并提供更改节点名称和复制,移动,添加或删除节点的方法。
现在,我正在打算在哪里放置哪些代码。显然,我有一个类将对数据库执行加载/更新/插入/删除等操作。这会将整个树加载到某个存储变量中,并将用户所做的更改保存回db。
这个类应该是dataProvider,dataDescriptor还是Tree控件本身的扩展?当用户请求添加节点之类的操作时,是应该更新dataProvider并让数据库处理程序对事件做出反应,还是应该调用数据库处理程序的方法然后更新dataProvider?我会说后者更好,因为如果db查询出现问题,更容易更新Tree的数据。
有哪些方法可以在DefaultDataDescriptor和Tree类中添加和删除节点(后者中的受保护方法),我应该使用/扩展它们还是忽略它们?
我对此感到困惑的原因是,根据文档,Tree控件使用存储在其“dataDescriptor”属性中的对象来解析和操作存储在其“dataProvider”属性中的实际数据。 / p>
这似乎有道理,直到你意识到除非你将它子类化,它永远不是操纵数据的Tree控件(除了拖放,如果启用了),它也不是dataDescriptor, 即可。相反,在所有示例中,操作数据直接通过dataProvider对象发生,并触发Tree控件中的事件处理程序。
我到底是什么东西?
答案 0 :(得分:1)
看看mx.controls.treeClasses.HierarchicalCollectionView
。它不是公共API的一部分,但其完整源代码可作为Flex的一部分提供。 Tree控制器在内部使用此类来处理各种数据源。