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>
>
>