2011-02-11 11 views
1

私は、FlexCellのデータをバインドするフレックスツリーコンポーネントを持っています。また、カスタムのITreeDataDescriptorを実装してツリーをフィルタリングしました。子ノードがなければ、最初のレベルのノードは消えません(フィルタリングされません)。それは第2レベルの下から機能します。Flexツリーは、ノードをフィルタリングするためにITreeDataDescriptorを使用します。

どうすればいいですか? すべての子ノードが除外されている場合にのみ、最初のレベルのノードを除外します。かなりこのexampleよう

、親は子供が

を行っている際にソースがArrayCollectionのであり、それはかなりの次

var dataSource:ArrayCollection = new ArrayCollection(); 
dataSource.addItem(myObject1); 
dataSource.addItem(myObject2); 
dataSource.addItem(myObject3); 
dataSource.addItem(myObject4); 

ようなものだとmyObject1〜myObject4に子が存在し消えてしまう以外のArrayCollection同じ種類の

答えて

0

これは、任意のコードなしで答えるのは難しいですが、ここでのアプローチにいくつかの提案です:

  • はあなたにもレベル1のノード(子供をフィルタリングできるように、ルートノードを持っていることを確認してくださいルートノード)
  • のこんにちは、私はそのGetChildrenメソッド()メソッドを持っているノードのすべての子が削除された場合/
+0

を隠さ見にITreeDataDescriptor実装のGetChildrenメソッド()メソッドでは、再帰的チェックを行いますすべてのノードの子ノードをチェックして、ノードが空であるかどうかを判定します。それはうまく動作します。ルートノードに関しては、私はそれを持っていない、代わりに私はルートノードとしてmyObject1〜myObject4を持っています。それは問題かもしれませんか? – Eatdoku

+0

ルートノードを追加して問題を解決しましたが、showRoot = falseを設定した場合、getChildren()関数はルート上で呼び出されないため、フィルタリングは適用されません。それでも何か? – Eatdoku

+0

子供がいないノードをフィルタリングするfilterFunctionをコレクションに追加する必要があると思います。 –

関連する問題