我有一个本地sqlite数据库,其中包含一个树(作为嵌套集)。在air应用程序中,我希望在树控件中显示该树,并提供更改节点名称以及复制、移动、添加或删除节点的方法。
现在,我有点打嗝,想知道该把哪个代码放在哪里。显然,我有一个类,它将对数据库执行诸如load/update/insert/delete之类的操作。这会将整个树加载到某个存储变量中,并将用户所做的更改保存回数据库。
这个类应该是数据提供程序、数据描述符还是树控件本身的扩展?当用户请求添加节点之类的操作时,应该更新dataprovider并让数据库处理程序对事件作出反应,还是应该调用数据库处理程序的方法,然后更新dataprovider?我认为后者更好,因为如果db查询出了问题,就更容易不更新树的数据。
在DefaultDataDescriptor和树类(后者是受保护的方法)中有添加和删除节点的方法,我应该使用/扩展这些方法还是忽略它们?
我对此感到困惑的原因是,根据文档,树控件使用存储在其“datadescriptor”属性中的对象来解析和操作存储在其“dataprovider”属性中的实际数据。
这似乎是有道理的,直到你意识到除非你把它分类,
操作数据的永远不是树控件(除非启用了拖放),也不是数据描述符
. 相反,在所有示例中,操作数据直接通过dataprovider对象进行,并触发树控件中的事件处理程序。
我怎么没来?