Again, I would recommend not using a binding expression to assign the XML to the dataProvider. Otherwise, I can't see why it would get reassigned unless your code is doing so. A call to validateNow() may be required after assigning the dataprovider before calling expandItem. Or use callLater. Showing some code or creating a mini-example may help us see what you are doing.
________________________________ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Tracy Spratt Sent: Thursday, September 06, 2007 10:24 AM To: [email protected] Subject: RE: [flexcoders] Re: Tree collapses when dataProvider for tree changes A few things to consider. 1) How are you adding nodes?. If you use XML as the dataProvider and use the XML API to add the nodes, the tree will not collapse. 2) After you programatically change a dataProvider, you need to use callLater to defer any interaction with the Tree control, to allow it to render first. 3) If you use XML as the tree dataProvider, you can use e4x expressions to find the node by its Id property, rather then iterating recursively over the collection. Tracy ________________________________ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Baljeet singh Sent: Thursday, September 06, 2007 5:40 AM To: [email protected] Subject: [flexcoders] Re: Tree collapses when dataProvider for tree changes Hi, Lets consider an XML as tree of nodes. Let me explain u the meaning of "id". My sample XML string look like: <node> <!--First Level --> <node id="1" name="A" code="1"> <!--Second Level --> <node id="2" name="A-1" code="1-1"/> <!--Third Level --> <node id="3" name="A-2" code="1-2"> <node id="4" name="A-2-1" code="1-2-1"/> <!-- Fourth Level--> <node id="5" name="A-2-2" code="1-2-2"/>. . </node> </node> <!-- & So on---> </node> Here my each XML node has unique Id attribute. Now suppose I create a tree with this XML & i click on any node. For the selected node, say node with id="5", i can find out the value of "id" attribute of selected node & save this in session object. Means now i have idea about which node i selected. Now suppose , i create two children for selected node i.e for node with id="5". So my XML changes somewhat like below: <node> <!--First Level --> <node id="1" name="A" code="1"> <!--Second Level --> <node id="2" name="A-1" code="1-1"/> <!--Third Level --> <node id="3" name="A-2" code="1-2"> <node id="4" name="A-2-1" code="1-2-1"/> <!-- Fourth Level--> <node id="5" name="A-2-2" code="1-2-2"/>. <node id="100" name="A-2-2-1" code="1-2-2-1"/> < !-- Level 5th---> <node id="101" name="A-2-2-2" code="1-2-2-2"/> . </node> </node> <!-- & So on---> </node> So my dataProvider changes & tree gets collapsed. As we have already stored the id attribte value of selected node in session. Now we can iterate over XMLListCollection to find the XML node with that particular id value. & Now i use expandItem() method & selectedItem property, providing selected node. But none of these things works. Thanks & Regards, Baljeet

