写得有点复杂,主要是网上找了很从例子,看上去简单,但是环境不一样,都是改改才实现的,这是我改的最简单的一个了。datagrid 和comboxr的数据源都是后台数据库的。
<!--定义嵌入在datagrid中的下拉选择项//-->
<fx:Component id="cbb_dataType">
<s:MXDataGridItemRenderer focusEnabled="true" >
<fx:Script>
<![CDATA[
import mx.collections.ArrayList;
public function get rating():String {
if (cbb.selectedItem!=null)
return cbb.selectedItem.label.toString();
return cbb.textInput.text;
}
public function selectedStr():void
{
cbb.dataProvider =outerDocument.statDataTpArr_comb;
cbb.textInput.text=outerDocument.dataGrid_statResult.selectedItem.TBFLDDATATYPENAME;
cbb.textInput.editable=false;
}
]]>
</fx:Script>
<s:ComboBox id="cbb" width="100%" initialize="selectedStr()"/>
</s:MXDataGridItemRenderer>
</fx:Component>
<mx:columns> <mx:DataGridColumn headerText="结果类型编号" dataField="STATRESTYPENUM"/> <mx:DataGridColumn headerText="结果类型名称" dataField="STATRESTYPENAME"/> <mx:DataGridColumn headerText="类型" dataField="TBFLDDATATYPENAME" editorDataField="rating" itemEditor="{this.cbb_dataType}" > </mx:DataGridColumn> <mx:DataGridColumn headerText="长度" dataField="STATRESTYPEDATATYPEWIDTH"/> <mx:DataGridColumn headerText="表头类型" dataField="STATRESBANDTYPE"/> </mx:columns>