How do I force all Tree itemrenderers to refresh?

Posted by Richard Haven on Stack Overflow See other posts from Stack Overflow or by Richard Haven
Published on 2010-04-06T18:18:26Z Indexed on 2010/04/06 18:23 UTC
Read the original article Hit count: 194

Filed under:
|
|

I have item renderers in an mx.controls.Tree that I need to refresh on demand.

I have code in the updateDisplayList that fires for only some of the visible nodes no matter what I do. I've tried triggering a change that they should all be listening for; I have tried clearing and resetting the dataProvider and the itemRenderer properties.

        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));
        }

The nodes refresh properly when I scroll them into view (e.g. the .data gets set), but I cannot force the ones that already exist to refresh or reset themselves.

Any ideas?

© Stack Overflow or respective owner

Related posts about flex

Related posts about actionscript