1
flexでmx:treeを作成し、そのデータプロバイダが配列コレクションです。さらに、この配列コレクションはデータベースを使用して設定されます。このプロセスはイベントリスナー関数で処理されます。データベースは、データを配列コレクションに非同期で返します。これは、flexアプリケーションの起動時に配列コレクションが完全に初期化されないという問題です。したがって、mx:treeは不完全です。ここで、コードセグメントである:Flex:mx:treeのデータプロバイダを更新する
protected function populateTreeNode(node:Object):void
{
if (node != null && node["className"] != "InventoryCategory") return;
var categoryId:Number = 0;
if (node != null)
categoryId = node["id"];
DAOUtil.loadAll("InventoryCategory", EventUtil.handleWithArgs(popoluateTreeNodeHandler, [node, "InventoryCategory"]), "categoryId", categoryId.toString());
DAOUtil.loadAll("InventoryItem", EventUtil.handleWithArgs(popoluateTreeNodeHandler, [node, "InventoryItem"]), "categoryId", categoryId.toString());
}
protected function popoluateTreeNodeHandler(event : Event , nodeCategory:Object, typeName:String): void
{
var items:Array = DAOUtil.getArray(event, typeName);
items = LangUtil.fromNameField(items);
if (nodeCategory != null)
nodeCategory["children"] = items;
else
inventoryArray.addAll(new ArrayCollection(items));
for each (var item:Object in items) populateTreeNode(item);
}
この関数は、再帰的配列のコレクションを初期化しようとpopulateTreeNodeHandler関数の最後でそれが完全に初期化されます。しかし、フレックスアプリケーションが開始されると、不完全な場合があります。この問題の解決策はありますか?
ツリーのデータプロバイダをどのように設定していますか?それは母集団関数または結合可能なクラス変数の応答にのみバインドされていますか? – Chad
これは、母集団関数の応答にバインドされています。そのように: dataProvider = "{inventoryArray}"さらに、この配列はデータベースで実現されます。 – ozgen