Flex:更新mx:tree的数据提供程序

时间:2011-09-16 09:31:39

标签: actionscript-3 flex flex4.5

我用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函数的末尾完全初始化。但是当Flex应用程序启动时,它有时是不完整的。有没有解决这个问题的方法?

1 个答案:

答案 0 :(得分:0)

问题得到解决。问题是两次完成数据提供程序数组。其中一个正确地使用类别项完成数组,而另一个清空数据提供程序数组。