代码之家  ›  专栏  ›  技术社区  ›  James McMahon

将flex树控件绑定到存储在数据库中的树的最佳方法是什么?

  •  2
  • James McMahon  · 技术社区  · 16 年前

    我有一个本地sqlite数据库,其中包含一个树(作为嵌套集)。在air应用程序中,我希望在树控件中显示该树,并提供更改节点名称以及复制、移动、添加或删除节点的方法。

    现在,我有点打嗝,想知道该把哪个代码放在哪里。显然,我有一个类,它将对数据库执行诸如load/update/insert/delete之类的操作。这会将整个树加载到某个存储变量中,并将用户所做的更改保存回数据库。

    这个类应该是数据提供程序、数据描述符还是树控件本身的扩展?当用户请求添加节点之类的操作时,应该更新dataprovider并让数据库处理程序对事件作出反应,还是应该调用数据库处理程序的方法,然后更新dataprovider?我认为后者更好,因为如果db查询出了问题,就更容易不更新树的数据。

    在DefaultDataDescriptor和树类(后者是受保护的方法)中有添加和删除节点的方法,我应该使用/扩展这些方法还是忽略它们?

    我对此感到困惑的原因是,根据文档,树控件使用存储在其“datadescriptor”属性中的对象来解析和操作存储在其“dataprovider”属性中的实际数据。

    这似乎是有道理的,直到你意识到除非你把它分类, 操作数据的永远不是树控件(除非启用了拖放),也不是数据描述符 . 相反,在所有示例中,操作数据直接通过dataprovider对象进行,并触发树控件中的事件处理程序。

    我怎么没来?

    1 回复  |  直到 13 年前
        1
  •  1
  •   David Hanak    16 年前

    看一看 mx.controls.treeClasses.HierarchicalCollectionView 。它不是公共api的一部分,但是它的完整源代码是flex的一部分。树控制器在内部使用这个类来处理各种数据源。

    推荐文章