2

ツリーを含むローカルSQLiteデータベースがあります(ネストされたセットとして)。AIRアプリケーションでは、そのツリーをツリーコントロールに表示し、ノードの名前を変更したり、ノードをコピー、移動、追加、または削除したりする手段を提供したいと思います。

今、私はどのコードをどこに置くかについて少し悩んでいます。明らかに、データベースに対してロード/更新/挿入/削除などの操作を実行するクラスがあります。これにより、ツリー全体がいくつかのストレージ変数にロードされ、ユーザーが行った変更がデータベースに保存されます。

このクラスは、dataProvider、dataDescriptor、またはTreeコントロール自体の拡張である必要がありますか?また、ユーザーがノードの追加などの操作を要求した場合、dataProviderを更新してデータベースハンドラーにイベントに反応させる必要がありますか、それともデータベースハンドラーのメソッドを呼び出してからdataProviderを更新する必要がありますか?dbクエリで問題が発生した場合にツリーのデータを更新しない方が簡単なので、後者の方が優れていると思います。

DefaultDataDescriptorとTreeクラス(後者では保護されたメソッド)にノードを追加および削除するメソッドがありますが、それらを使用/拡張するか、無視する必要がありますか?

これについて私が混乱している理由は、ドキュメントによると、Treeコントロールは'dataDescriptor'プロパティに格納されているオブジェクトを使用して、'dataProvider'プロパティ内に格納されている実際のデータを解析および操作するためです。

これは、サブクラス化しない限り、データを操作するのはツリーコントロールではなく(ドラッグアンドドロップが有効になっている場合を除く)、dataDescriptorでもないことに気付くまでは理にかなっているようです。むしろ、すべての例で、データの操作はdataProviderオブジェクトを介して直接行われ、Treeコントロールのイベントハンドラーをトリガーします。

ここに来ないのは何ですか?

4

1 に答える 1

1

を見てくださいmx.controls.treeClasses.HierarchicalCollectionView。これはパブリックAPIの一部ではありませんが、その完全なソースはFlexの一部として利用できます。Treeコントローラーは、このクラスを内部的に使用して、さまざまなデータソースを処理します。

于 2009-01-29T18:12:38.723 に答える