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:Application 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;
private function onInitialize():void
{
myService.send();
}
private function onChange(p_evt:ListEvent):void
{
trace(myCollection.child('categories').children());
}
private function onResult(p_evt:ResultEvent):void
{
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" <[EMAIL PROTECTED]> wrote:
>
> Your itemEditEnd handler should call preventDefault() and maybe
> destroyItemEditor
>
>
>
> ________________________________
>
> 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>
> <folder 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 (node == 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()">
> <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 = new XMLListCollection(XMLListData);
> }
>
> 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.
>