Flex 4 Tree Control не обновляется
Я использую элемент управления MX Tree во Flex 4.6. Его поставщик данных является вложенным ArrayCollection. Элемент управления работает так, что при расширении узла дерева событие передается другому компоненту, который обнаруживает событие, получает данные с сервера и обновляет ArrayCollection (т. Е. ArrayCollection нажатой ветви). Но обновленные данные не отображаются в дереве, пока я не закрою конкретную ветку и не разверну ее снова.
Например
- + Папка 1
- + Папка 2
- + Папка 3
Первоначально дочерняя папка 1 представляет собой пустую коллекцию ArrayCollection, когда пользователь раскрывает данные из папки 1, извлекается из серверной части и добавляется в дочернюю коллекцию ArrayCollection. Но это не показывает детей в папке 1. Если я закрываю папку 1 и открываю ее снова, она появляется. Я думал, что когда данные были добавлены в ArrayCollection, он должен обновить отображение. Может кто-нибудь, пожалуйста, дайте мне знать, что я могу делать неправильно?
2 ответа
По моему опыту, следующее работало, чтобы уведомить элемент управления Tree о том, что его список должен быть перерисован:
- arrayCollection.refresh ();
- tree.invalidateList ();
Я нашел решение проблемы. Когда любой из дочерних классов ArrayCollection обновляется, мне нужно вызвать itemupdated в основном классе ArrayCollection. Это обновляет представление правильно. Таким образом, в приведенном выше примере, если пользователь нажимает на папку 2, событие передается в модель, которая добавляет данные в коллекцию дочерних массивов папки 2, как только это будет сделано, я должен вызвать itemupdated на моей основной коллекции ArrayCollection с обновленным элементом как папка 2., это обновило древовидное представление правильно.