1. <!--  
  2.      This is an item editor component for DataGrid.  
  3.      The dataProvider property is of type ArrayCollection,in this collection,the item type is String.  
  4.      I was trying to set the item type as Object that holds two properties like {id:1,value:'Combox1'}.  
  5.      Considering to the commonality,I prefer this way,although I may write more code somwhere.  
  6.      This component should be optimised sometime to make it more flexiable.  
  7.  
  8. -->  
  9. <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" 
  10.          implements="mx.controls.listClasses.IDropInListItemRenderer,mx.managers.IFocusManagerComponent">  
  11.     <mx:Metadata>  
  12.         [Event(name="comboxItemChange",type="common.CustomEvent")]  
  13.     </mx:Metadata>  
  14.     <mx:Script>  
  15.         <![CDATA[  
  16.             import common.CustomEvent;  
  17.               
  18.             import mx.collections.ArrayCollection;  
  19.             import mx.controls.Alert;  
  20.             import mx.controls.dataGridClasses.DataGridItemRenderer;  
  21.             import mx.controls.dataGridClasses.DataGridListData;  
  22.             import mx.controls.listClasses.BaseListData;  
  23.             import mx.controls.listClasses.IDropInListItemRenderer;  
  24.             import mx.controls.listClasses.IListItemRenderer;  
  25.             import mx.controls.listClasses.ListData;  
  26.             import mx.core.IDataRenderer;  
  27.             import mx.events.ListEvent;  
  28.               
  29.             [Bindable]  
  30.             public var dataProvider:ArrayCollection = new ArrayCollection();  
  31.               
  32.             private var _listData:DataGridListData;  
  33.             // Define a property for returning the new value to the cell.  
  34.             [Bindable]  
  35.             public var value:Object;  
  36.               
  37.             // Implement the drawFocus() method for the VBox.  
  38.             override public function drawFocus(draw:Boolean):void  
  39.             {  
  40.                 CB.setFocus();  
  41.             }  
  42.               
  43.             override public function get data():Object  
  44.             {  
  45.                 return super.data;  
  46.             }  
  47.               
  48.             override public function set data(value:Object):void  
  49.             {  
  50.                 super.data = value;  
  51.                 CB.data = value[_listData.dataField];  
  52.             }  
  53.               
  54.             //flex initializes the listData property of the component  
  55.             //with the appropriate data from the list control   
  56.             public function get listData():BaseListData  
  57.             {  
  58.                 return _listData;  
  59.             }  
  60.               
  61.             public function set listData(value:BaseListData):void  
  62.             {  
  63.                 _listData = DataGridListData(value);  
  64.             }  
  65.               
  66.             protected function CB_changeHandler(event:ListEvent):void  
  67.             {  
  68.                 this.dispatchEvent(new CustomEvent([this.data, value], "comboxItemChange"));  
  69.             }  
  70.           
  71.         ]]>  
  72.     </mx:Script>  
  73.     <mx:Binding destination="value" source="{CB.value}"/>  
  74.     <mx:ComboBox id="CB"  editable="false"   dataProvider="{dataProvider}"   change="CB_changeHandler(event)" />  
  75. </mx:VBox>