I assume your editorDataField is really cmbValue.

I don’t know what your data looks like, but you probably don’t want to use 
Binding in the renderer.  When the data is set, you want to set cmbValue to 
whatever value is currently in the dataField for that data item.  Then only 
change it when the combobox sends out a change event.


On 2/24/10 11:41 AM, "md_ars" <[email protected]> wrote:






Hello,

I have following piece of code from main mxml and below that I have
component code for Combobox. I am using label function to decode values as 
Yes/No when populating Data Grid from the database. It wipe the value from the 
cell once I click on the combobox and don't select values from it. I used 
prompt in combobox which works to avoid blank but it change the values to 
prompt.

I tried many examples but didn't work for me. Please help. Also I want to use 
Item Renderer instead if Item Editor.

Thanks
Arshad

main.mxml
---------------------
[Bindable] private var queryData:ArrayCollection = new ArrayCollection();
------
------
<mx:DataGrid id="dgGrid" width="644" dataProvider="{queryData}" height="270" 
editable="true" >
------
-----
<mx:DataGridColumn width="175" textAlign="center"
 headerText="Tax" sortable="false" dataField="tax"
 labelFunction="taxLabel"
 editable="true" editorDataField="value" itemEditor="yesNoComboBox">
</mx:DataGridColumn>

---------------------------------yesNoComboBox ----------
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml";
implements="mx.controls.listClasses.IDropInListItemRenderer,mx.managers.IFocusManagerComponent">

<mx:Script>
 <![CDATA[
 import mx.controls.listClasses.ListData;
 import mx.controls.dataGridClasses.DataGridListData;
 import mx.controls.listClasses.BaseListData;
 import mx.controls.dataGridClasses.DataGridItemRenderer
 import mx.events.FlexEvent;

     private var _listData:DataGridListData;

[Bindable]
 public var cmbValue:Object;

override public function get data():Object {
 return super.data;
 }

override public function set data(value:Object):void {
 cbo.data=value[_listData.dataField];
 cbo.selectedItem= value[_listData.dataField];
 trace("---->"+cmbValue)
 }
 public function get listData():BaseListData
 {
 return _listData;
 }

public function set listData(value:BaseListData):void
 {
 _listData = DataGridListData(value);
 }

]]>
 </mx:Script>
 <mx:Binding destination="cmbValue" source="cbo.value"/>

 <mx:ComboBox id="cbo" editable="true" width="100%" >
 <mx:dataProvider>
 <mx:String>Yes</mx:String>
 <mx:String>No</mx:String>
 </mx:dataProvider>
 </mx:ComboBox>
</mx:VBox>






--
Alex Harui
Flex SDK Team
Adobe System, Inc.
http://blogs.adobe.com/aharui

Reply via email to