2011-09-16 11 views
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関数の最後でそれが完全に初期化されます。しかし、フレックスアプリケーションが開始されると、不完全な場合があります。この問題の解決策はありますか?

+0

ツリーのデータプロバイダをどのように設定していますか?それは母集団関数または結合可能なクラス変数の応答にのみバインドされていますか? – Chad

+0

これは、母集団関数の応答にバインドされています。そのように: dataProvider = "{inventoryArray}"さらに、この配列はデータベースで実現されます。 – ozgen

答えて

0

問題は修正されました。問題は、データプロバイダの配列を2回実行することです。それらのうちの1つはカテゴリ項目で配列を正しく実行しますが、もう1つはデータプロバイダ配列を空にします。

関連する問題