写得有点复杂,主要是网上找了很从例子,看上去简单,但是环境不一样,都是改改才实现的,这是我改的最简单的一个了。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>