Hi, Just in case someone faces the same problem and happens to see this thread.
I was able to solve the problem by upgrading my flex sdk to hotfix 2. Didn't upgrade to hotfix 3 as I did not see and fixes relevant to my requirements. Rgds, Mayank On 9/20/07, Mayank <[EMAIL PROTECTED]> wrote: > > Hi, > > I am facing a strange behaviour in mx:Tree's rendering when i update its > data provider. > > To reproduce the problem, compile the code below and then do the following > : > - expand the 'root' node and 'c1' node. > - Now click on the 'add node' button. > > this is supposed to add a node under node 'c1', but the display goes > berserk when the dataprovider gets updated. However, when one tries to > expand node 'c1' everything seems to be back to normal again ... > > would appreciate any help .. > > The sample code is given below: > > XMLUtils.as > > package default > { > import mx.controls.List; > > public class XMLUtils > { > public static function getChildById ( xml : XML, id : String ) : > XML > { > var descendants : XMLList = xml.descendants("*"); > > for( var i : int = 0; i < descendants.length(); i++ ) > { > trace ( "id - " + descendants[i].attribute ( "id" ) ); > > if ( XML ( descendants[i] ).attribute("id").toString() == > id ) > return descendants[i]; > > } > > return null; > } > } > } > > > test.mxml > > <?xml version=" 1.0" encoding="utf-8"?> > <mx:Application > xmlns:mx="http://www.adobe.com/2006/mxml" > layout="vertical" > width="100%" > creationComplete="onCreationComplete(event)" > > > <mx:Script> > <![CDATA[ > import default.XMLUtils; > import mx.rpc.events.ResultEvent; > import mx.collections.XMLListCollection; > import mx.collections.ArrayCollection; > > private function onCreationComplete ( event : Event ) : void > { > trace ( "onCreationComplete invoked ..." ); > } > > private function addNode ( ) : void > { > var newNode : XML = <node/>; > [EMAIL PROTECTED] = "c12"; > [EMAIL PROTECTED] = "6"; > > [EMAIL PROTECTED] = "false"; > [EMAIL PROTECTED] = "true"; > [EMAIL PROTECTED] = "true"; > [EMAIL PROTECTED] = "false"; > > var node : XML = XMLUtils.getChildById( folders, "2"); > > node.appendChild ( newNode ); > } > > ]]> > </mx:Script> > > <mx:XML id="folders" xmlns=""> > <response> > <node id="1" deleteAllowed="true" updateAllowed="true" > readAllowed="true" createAllowed="true" label="root"> > <node id="2" deleteAllowed="true" updateAllowed="true" > readAllowed="true" createAllowed="true" label="c1"> > <node id="3" deleteAllowed="true" updateAllowed="true" > readAllowed="true" createAllowed="true" label="c11"> > <node id="4" deleteAllowed="true" updateAllowed="true" > readAllowed="true" createAllowed="true" label="c111"/> > <node id="5" deleteAllowed="true" updateAllowed="true" > readAllowed="true" createAllowed="true" label="c112"/> > </node> > </node> > </node> > </response> > </mx:XML> > > <mx:Tree id="tree" dataProvider="{folders}" labelField="@label" > showRoot="false" width="25%" height="50%"/> > <mx:Button label="add node" click="addNode()"/> > </mx:Application> > >