Flex: Обновление поставщика данных mx: tree - PullRequest
1 голос
/ 16 сентября 2011

Я создаю дерево mx: с помощью flex, и его поставщик данных является коллекцией массивов.Кроме того, эта коллекция массивов устанавливается с помощью базы данных.Этот процесс обрабатывается функцией прослушивания событий.База данных возвращает данные в массив массива асинхронно.И это проблема в том, что при запуске приложения 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 голосов
/ 19 сентября 2011

Проблема исправлена.Проблема заключается в заполнении массива провайдера данных два раза.Один из них правильно выполняет массив с элементами категории, а другой - пустой массив поставщика данных.

...