Как заставить всех предметовендеров Дерева обновляться? - PullRequest
1 голос
/ 06 апреля 2010

У меня есть средства визуализации элементов в дереве mx.controls.Tree, которые мне нужно обновлять по требованию.

У меня есть код в updateDisplayList, который запускает только некоторые из видимых узлов, независимо от того, что я делаю.Я попытался вызвать изменение, которое они все должны слушать;Я попытался очистить и сбросить dataProvider и свойства itemRenderer.

        private function forceCategoryTreeRefresh(event : Event = null) : void
        {
            trace("forceCategoryTreeRefresh");

            var prevDataProvider : Object = CategoryTree.dataProvider;
            CategoryTree.dataProvider = null;
            CategoryTree.validateNow();
            CategoryTree.dataProvider = prevDataProvider;

            var prevItemRenderer : IFactory = CategoryTree.itemRenderer;
            CategoryTree.itemRenderer = null;

            CategoryTree.itemRenderer = prevItemRenderer as IFactory;

            _categoriesChangeDispatcher.dispatchEvent(new Event(Event.CHANGE));
        }

Узлы обновляются должным образом, когда я прокручиваю их в поле зрения (например, .data получает установлен), но я не могу форсировать те, которые уже существуютобновить или сбросить себя.

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 27 января 2011

Попробуйте вызвать эту функцию при изменении события:

private function refreshList(e:Event):void{
          listName.invalidateSize();
          listName.invalidateList();
          listName.invalidateDisplayList();
          listName.validateSize(true);
          listName.validateNow();
        }

у меня работают довольно хорошо

0 голосов
/ 20 сентября 2014

Try treeView.dataProvider = treeView.dataProvider;

Это должно обновить вид дерева.

0 голосов
/ 08 апреля 2010

ItemRenderers во Flex виртуализированы, поэтому не всегда будет один ItemRenderer для каждого узла дерева.

Однако вы можете сделать узлы недействительными для принудительного обновления.Ответ на на этот вопрос дает пример того, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...