Thanks for putting me on the right track to being able to add items to my Tree that is bound to a XMLListCollection. I had a heck of a time figuring out how to to an addItemAt to a XMLListCollection ... because it is not a valid method. Using the ITreeDataDescriptor was the trick.
I am still not sure how to work this into my UpdateTreeCommand.as when using Cairngorm. The code below is a modification of the code you posted. [CODE] <?xml version="1.0" encoding="utf-8"?> <!-- Tree control example. --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init();" > <mx:Script> <![CDATA[ import mx.controls.List; import mx.collections.ICollectionView; import mx.collections.XMLListCollection; import mx.controls.treeClasses.*; [Bindable] public var selectedNode:Object; [Bindable] public var myXLC:XMLListCollection; // public function init():void{ myXLC = new XMLListCollection(treeData.node); } // public function addMySibling(n:int):void{ var xm:ITreeDataDescriptor = myTree.dataDescriptor; var newNode:XML = new XML(); newNode = <folder label='Sibling'></folder> if (n == -1){ myXLC.addItem(newNode); } else { xm.addChildAt(myTree.getParentItem(myTree.selectedItem),newNode,n); } } // public function addMyChild(n:int):void{ var xm:ITreeDataDescriptor = myTree.dataDescriptor; var newNode:XML = new XML(); newNode = <folder label='Child'></folder> if (n == -1){ xm.addChildAt(myTree.selectedItem,newNode,0); } else { xm.addChildAt(myTree.selectedItem,newNode,n); } /* // Code to select the newly created child. I cannot get this to work =( var selItem:ICollectionView = xm.getChildren(myTree.selectedItem); trace("selItem: "+selItem); trace("selItem.length: "+selItem.length); myTree.selectedItem = myTree.selectedItem.childNodes[selItem.length]; */ } // public function treeChanged(event:Event) : void { selectedNode=Tree(event.target).selectedItem; } ]]> </mx:Script> <mx:XML id="treeData"> <node> <node label="Mail Box"> <node label="Inbox"> <node label="Marketing"/> <node label="Product Management"/> <node label="Personal"/> </node> <node label="Outbox"> <node label="Professional"/> <node label="Personal"/> </node> <node label="Spam"/> <node label="Sent"/> </node> </node> </mx:XML> <mx:Panel title="Tree Control Example" height="75%" width="75%" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10"> <mx:Label text="Select a node in the Tree control."/> <mx:Button label="Add sibling to selected tree node" click="addMySibling(myTree.selectedIndex)"/> <mx:Button label="Add child to selected tree node" click="addMyChild(myTree.selectedIndex)"/> <mx:HDividedBox width="100%" height="100%"> <mx:Tree id="myTree" width="50%" height="100%" labelField="@label" showRoot="false" dataProvider="{myXLC}" change="treeChanged(event)"/> <mx:TextArea height="100%" width="50%" text="Selected Item: [EMAIL PROTECTED]"/> </mx:HDividedBox> </mx:Panel> </mx:Application> [/CODE] --- In [email protected], <[EMAIL PROTECTED]> wrote: > > Use the dataDescriptor for the tree- here is an example from some base > code i posted earlier about selecting a tree node item - but the jist of > it is : > > var xm:ITreeDataDescriptor=myTree.dataDescriptor; > xm.addChildAt(treeData.node.node[0]," <node label='BitchWhoCodes'/>",0); > > FULL CODE FOLLOWS :) > ,,------------------------------------------- > > <?xml version="1.0" encoding="utf-8"?> > <!-- Tree control example. --> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" > > > <mx:Script> > <![CDATA[ > import mx.controls.List; > import mx.collections.ICollectionView; > > import mx.collections.*; > > import mx.controls.treeClasses.*; > [Bindable] > public var selectedNode:Object; > > [Bindable] > public var XLC:XML; > > > // Event handler for the Tree control change event. > public function initApp(){ > > > var xm:ITreeDataDescriptor=myTree.dataDescriptor; > var xml:XMLListCollection=new XMLListCollection(treeData); > > myTree.expandItem(treeData.node[0],true,false); > myTree.expandItem(treeData.node.node[0],true,false); > xm.addChildAt(treeData.node.node[0]," <node > label='BitchWhoCodes'/>",0); > > var item=treeData.node.node[0]; > myTree.selectedItem=item; > > > } > > public function treeChanged(event:Event) : void > { > selectedNode=Tree(event.target).selectedItem; > } > ]]> > </mx:Script> > > <mx:XMLList id="treeData"> > <node> > <node label="Mail Box"> > <node label="Inbox"> > <node label="Marketing"/> > <node label="Product Management"/> > <node label="Personal"/> > </node> > <node label="Outbox"> > <node label="Professional"/> > <node label="Personal"/> > </node> > <node label="Spam"/> > <node label="Sent"/> > </node> > </node> > </mx:XMLList> > > <mx:Panel title="Tree Control Example" height="75%" width="75%" > paddingTop="10" paddingLeft="10" paddingRight="10" > paddingBottom="10"> > > <mx:Label text="Select a node in the Tree control."/> > > <mx:HDividedBox width="100%" height="100%"> > <mx:Tree id="myTree" width="50%" height="100%" > labelField="@label" > showRoot="false" dataProvider="{new > XMLListCollection(treeData)}" change="treeChanged(event)" > creationComplete="initApp()"/> > <mx:TextArea height="100%" width="50%" > text="Selected Item: [EMAIL PROTECTED]"/> > </mx:HDividedBox> > > </mx:Panel> > </mx:Application> > > > Hi, > > > > As you can see below, I solved the problem. > > > > private function addChildAtTree ():void > > { > > var foo:XMLList = capitalColl.children (); > > var foo_0 :XMLList = foo[0].children(); > > var fooColl :XMLListCollection = new XMLListCollection ( foo_0 ); > > fooColl.addItem ( new XML ( "<capital label='ME' value='Augusta'/>" ) > > ); > Tree2.invalidateList(); > > } > > > > But I wanna know if you have any idea other. > > > > Let me know it. > > > > Thank you, > > Bryan. > > ----- Original Message ----- > > From: Bryan Choi > > To: flexcoders > > Sent: Tuesday, May 23, 2006 12:02 PM > > Subject: [flexcoders] [BETA3] I am still having a problem. > > > > > > var foo:XMLList = capitalColl.children (); > > foo.appendChild(new XML ( "<capital label='ME' value='Augusta'/>")); > > > > ================================================ > > > > I tried to execute it. > > > > I can see that it show me follow message. > > > > ------------------- > > > > TypeError: Error #1086: The appendChild method only works on lists > > containing one item. > > > > ------------------- > > > > Have you Any idea other? > > > > Thank you, > > Bryan. > > > > > > -- > > Flexcoders Mailing List > > FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt > > Search Archives: > > http://www.mail-archive.com/flexcoders%40yahoogroups.com > > > > > > > > SPONSORED LINKS Web site design development Computer software > > development Software design and development > > Macromedia flex Software development best practice > > > > > > ------------------------------------------------------------------------------ > > YAHOO! GROUPS LINKS > > > > a.. Visit your group "flexcoders" on the web. > > > > b.. To unsubscribe from this group, send an email to: > > [EMAIL PROTECTED] > > > > c.. Your use of Yahoo! Groups is subject to the Yahoo! Terms of > > Service. > > > > > > ------------------------------------------------------------------------------ > > > -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/

