Search code examples
actionscript-3apache-flexflash-builder4.5

AdvancedDatagrid with itemEditor: Value disappears when clicked


I'm trying to use a ComboBox as itemEditor in an AdvancedDatagrid. Both the grid and the comboBox fills up correctly with values. But when I click in a cell the value disappears. Do I need to set more properties to make this work, or do I have to write my own itemEditor that copies the value to and from the itemEditor?

Full code:

<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" 
               initialize="initCB();">

<fx:Script>
    <![CDATA[
        import mx.collections.*;
        [Bindable] public var stateArray:ArrayCollection;

        public function initCB():void {
            stateArray=new ArrayCollection([{label:"AL", data:"Montgomery"},
                                      {label:"AK", data:"Juneau"},
                                      {label:"AR", data:"Little Rock"}]);
        } 

        [Bindable] public var initDG:ArrayCollection = new ArrayCollection([{etikett:'NY', tekst:"New York"}, {etikett:'CA', tekst:"Los Angeles"}]);
    ]]>
</fx:Script>     


<mx:AdvancedDataGrid id="gridIntMapping" y="24" left="10" right="605" height="166" editable="true" dataProvider="{initDG}">
    <mx:columns>
            <mx:AdvancedDataGridColumn width="130" dataField="etikett" headerText="Skjema referanse" editorDataField="text">
                <mx:itemEditor>
                    <fx:Component>                  
                        <mx:ComboBox editable="true" dataProvider="{outerDocument.stateArray}" labelField="label"/>
                    </fx:Component>
                </mx:itemEditor>
            </mx:AdvancedDataGridColumn>
    </mx:columns>
</mx:AdvancedDataGrid>


Solution

  • Set data.etikett to combobox text. like following:

    <mx:ComboBox editable="true" dataProvider="{outerDocument.stateArray}" labelField="label" text="{data.etikett}" />
    

    It will display text when you click.