have you tried using invalidateList?
 
 
 

        -----Original Message-----
        From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of 
Stephane Guyot
        Sent: Monday, April 02, 2007 1:58 PM
        To: [email protected]
        Cc: Nick Durnell
        Subject: Re: [flexcoders] Tree bug?
        
        

        Nick, 

        the same trouble for me, I've noticed strange behavior with Tree 
manipulation.
        I think it's maybe not your code.
        Have a look at : 
http://www.adobe.com/devnet/flex/quickstart/working_with_tree/ 
<http://www.adobe.com/devnet/flex/quickstart/working_with_tree/> 
        take the first example :  Add Operation Employee
        Add many employees to force scrollbars to appears, then remove one 
...., there's some troubles like yours

        Stephane


        Le 2 avr. 07 à 14:13, Nick Durnell a écrit :


                

                Hi all,
                
                I have a tree containing lots of branches. When a user opens a 
                branch I add a load of leaf nodes to it. I am running into 
problems 
                where the new nodes are not displayed correctly.
                
                Here is a sample application which demonstrates the problem:
                
                <?xml version="1.0" encoding="utf-8"?>
                <mx:Application xmlns:mx="http://www.adobe. 
<http://www.adobe.com/2006/mxml> com/2006/mxml" width="200" 
                height="300" layout="absolute" 
creationComplete="createTopNodes();">
                <mx:Script>
                <![CDATA[
                import mx.events.TreeEvent;
                import mx.collections.ArrayCollection;
                
                [Bindable] private var treeNodes:ArrayCollection = new 
                ArrayCollection();
                
                private function createTopNodes():void
                {
                var newTestObj:TestObj;
                for (var i:int=1; i<=20; i++)
                {
                newTestObj = new TestObj();
                newTestObj.id = i.toString();
                newTestObj.children = new Array();
                treeNodes.addItem(newTestObj);
                }
                }
                
                private function itemOpenHandler(e:TreeEvent):void
                {
                var selectedObj:TestObj = TestObj(e.item);
                if (selectedObj.hasChildren)
                {
                return;
                }
                var newTestObj:TestObj;
                for (var i:int=1; i<=20; i++)
                {
                newTestObj = new TestObj();
                newTestObj.id = selectedObj.id + "_" + i.toString();
                newTestObj.children = new Array();
                selectedObj.children.push(newTestObj);
                }
                selectedObj.hasChildren = true;
                }
                ]]>
                </mx:Script>
                <mx:Tree id="testTree" width="100%" height="100%" 
                dataProvider="{treeNodes}" labelField="id" 
itemOpen="itemOpenHandler
                (event);"/>
                </mx:Application>
                
                This demo simply creates 20 top-level nodes and adds 20 child 
nodes 
                whenever you open an existing node.
                
                If you run the application and expand a node, the new child 
nodes are 
                displayed down to the bottom of the visible tree area (all well 
and 
                good). However if you scroll down, the remaining sub-nodes are 
                nowhere to be seen! In fact, the visible sub-nodes have been 
drawn 
                on top of the nodes at the top of the tree. However if you 
close the 
                node again and open it a second time everything is displayed as 
it 
                should.
                
                Is this a bug with the tree control or am I doing something 
                completely wrong? I need to create nodes like this on the fly 
as my 
                tree is very big and I need to fetch child nodes from a 
database 
                whenever the user opens a node in the tree. I've tried adding 
calls 
                to invalidateDisplayList and invalidateSize on the tree after 
                creating the child nodes but this doesn't seem to make any 
difference.
                
                Thanks,
                
                Nick.
                
                

                


        

         

Reply via email to