Brilliant Alex, thanks again. I'll file a bug.
--- In [email protected], "Alex Harui" <[EMAIL PROTECTED]> wrote:
>
> I would not assign an XMLList to selectedItem. I would extract the XML
> node from the XMLList. It is a bug that we don't extract the node
> correctly so feel free to file a bug if you want.
>
>
>
> categoryComboBox.selectedItem =
> myCollection.child('categories').children().(@id == "0")[0];
>
>
>
>
>
> ________________________________
>
> From: [email protected] [mailto:[EMAIL PROTECTED] On
> Behalf Of nikolajselvik
> Sent: Friday, March 21, 2008 4:56 PM
> To: [email protected]
> Subject: [flexcoders] Re: 'label' & 'mx_internal_uid' nodes mysteriously
> added to XMLListCollection
>
>
>
> Hi,
>
> preventDefault() works fine, thanks a lot Alex!
>
> On to the <mx_internal_uid> mystery node then...
>
> The problem only occurs when I set the selectedItem of the ComboBox but
> can't see why that should present this problem?
>
> [artistdata.xml]
>
> <artistdata>
> <categories>
> <category id="0">
> <label>Photographers</label>
> </category>
> <category id="1">
> <label>Stylists</label>
> </category>
> </categories>
> </artistdata>
>
> [mxnode.mxml]
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Applica! tion xmlns:mx="http://www.adobe.com/2006/mxml"
> layout="absolute" initialize="onInitialize()">
> <mx:HTTPService url="artistdata.xml" id="myService"
> result="onResult(event)" resultFormat="e4x">
>
> </mx:HTTPService>
> <mx:Script>
> <![CDATA[
> import mx.events.ListEvent;
> import mx.rpc.events.ResultEvent;
> import mx.collections.XMLListCollection;
>
> [Bindable]
> public var myCollection:XMLListCollection;
>
> &n! bsp; private function onInitialize():voi d
> {
> myService.send();
> }
>
> private function onChange(p_evt:ListEvent):void
> {
> trace(myCollection.child('categories').children());
> }
>
> private function onResult(p_evt:ResultEvent):void
> &n! bsp; {
> var XMLListData:XMLList = new XMLList(p_evt.result as
> XML);
> myCollection = new XMLListCollection(XMLListData);
> categoryComboBox.selectedItem =
> myCollection.child('categories').children().(@id == "0");
> }
> ]]>
> </mx:Script>
>
> <mx:ComboBox id="categoryComboBox"
> dataProvider="{myCollection.child('categories').children()}"
> change="onChange(event)"></mx:ComboBox>
>
> </mx:Application>
>
>
> --- In [email protected], "Alex Harui" <aharui@> wrote:
> >
> > Your itemEd! itEnd handler should call preventDefault() and maybe
> &! gt; dest royItemEditor
> >
> >
> >
> > ________________________________
> >
> > From: [email protected] [mailto:[EMAIL PROTECTED]
> On
> > Behalf Of nikolajselvik
> > Sent: Friday, March 21, 2008 1:30 PM
> > To: [email protected]
> > Subject: [flexcoders] Re: 'label' & 'mx_internal_uid' nodes
> mysteriously
> > added to XMLListCollection
> >
> >
> >
> > [artist.xml]
> >
> > <artistdata>
> > <artist>
> > <name>John</name>
> > <portfolio>
> > <folder isBranch="false">
> > <name>Johns Folder</name>
> > </folder>
> > </portfolio>
> > </artist>
> > <artist>
> > <name>Anna</name>
> > <portfolio>
> > <folde! r isBranch="false">
> > <name>Annas Folder</name> </folder>
> > </portfolio>
> > </artist>
> > </artistdata>
> >
> > [ArtistTreeDataDescriptor.as]
> >
> > package
> > {
> > import mx.collections.ArrayCollection;
> > import mx.collections.ICollectionView;
> > import mx.collections.XMLListCollection;
> > import mx.controls.treeClasses.DefaultDataDescriptor;
> >
> > public final class ArtistTreeDataDescriptor extends
> > DefaultDataDescriptor
> > {
> > public function ArtistTreeDataDescriptor()
> > {
> > super();
> > }
> >
> > &nbs! p; override public function getChildren(node:! Object,
> > model:Object=null):ICollectionView
> > {
> > if (n! ode == null)
> > {
> > return null! ;
> > ; }
> >
> > var children:*;
> > var childrenCollection:ICollectionView;
> >
> > if (node is XML)
> > {
> > if((node as XML).localName() == "artist")
> > {
> > children = node.portfolio.folder;
> > }
> > &nb! sp; }
> >
> > if(children == undefined)
> > {
> > return null;
> > }
> >
> > childrenCollection = new XMLListCollection(children);
> >
> > return childrenCollection;
> > }
> >
> > }
> > }
> >
> > [ArtistTree.mxml]
> >
> > <?xml version="1.0" encoding="utf-8"?>
> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
> > layout="absolute" initialize="onInitialize()">
> &! gt; <mx:HTTPService url="artistdata.xml" id="myService"
> > result="onResult(event)" resultFormat="e4x">
> >
> > &l! t;/mx:HTTPService>
> > <mx:Script> ; <![CDATA[
> > import mx.events.ListEvent;
> > import mx.rpc.events.ResultEvent;
> > import mx.collections.XMLListCollection;
> >
> > [Bindable]
> > public var myCollection:XMLListCollection;
> >
> > private function onInitialize():void
> > {
> > myService.send();
> > }
> > &nb! sp;
> > private function onResult(p_evt:ResultEvent):void
> > {
> > var XMLListData:XMLList = new XMLList(p_evt.result as
> > XML);
> > myCollection = ne! w XMLListCollection(XMLListData);
> > ! }
> & gt;
> > private function onItemEditEnd(p_evt:ListEvent):void
> > {
> > p_evt.currentTarget.editedItemRenderer.data.name =
> > p_evt.currentTarget.ite! mEditorInstance.text;
> > &! nbsp; &n bsp; trace(myCollection);
> > }
> >
> > private function
> > artistTreeLabelFunction(p_object:Object):String
> > {
> > var nodeXML:XML = p_object as XML;
> > var label:String;
> >
> > switch(nodeXML.localName())
> > {
> > case "artist":
> > &n! bsp; label = nodeXML.name;
> > break;
> >
> > case "folder":
> > label = nodeXML.name! ;
> > break;
> > }
> >
> > return label;
> > }
> > !
> > &! nbsp; ]]>
> > </mx:Script>
> > <mx:Tree
> > labelFunction="artistTreeLabelFunction"
> > dataDescriptor="{new ArtistTreeDataDescriptor()}"
> > dataProvider="{myCollection.child('artist')}"
> > height="100%"
> > width="100%"
> > itemEditEnd="onItemEditEnd(event)"
> > editable="true"
> > ></mx:Tree>
> > </mx:Application>
> >
> > Description:
> >
> > Editing an item in the tree will result in <label> nodes getting added
> > to the artist node or folder node. Note that you need to edit an item
> > twice for this node to show up in the my! Collection trace.
> ! >
>