Que tal.
Vaya, al fin una pregunta de Flex. =)
Bien, para agregar componentes a otro componente, es este caso un ComboBox a un Datagrid se usa la propiedad itemRenderer.
Para ello necesitas 2 Archivos MXML uno que es tu aplicacion principal donde se encuentra el Datagrid, y otro que sera el Renderer, en este caso el que contendra el ComboBox. y a la columna donde quieres que aparesca el ComboBox agregarle la propiedad itemRenderer algo asi.
test.mxml.
Código HTML:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:XMLList id="employees">
<employee>
<name>Christina Coenraets</name>
<phone>555-219-2270</phone>
<active>true</active>
</employee>
<employee>
<name>Joanne Wall</name>
<phone>555-219-2012</phone>
<active>true</active>
</employee>
<employee>
<name>Maurice Smith</name>
<phone>555-219-2012</phone>
<email>[email protected]</email>
<active>false</active>
</employee>
<employee>
<name>Mary Jones</name>
<phone>555-219-2000</phone>
<active>true</active>
</employee>
</mx:XMLList>
<mx:Panel height="50%" width="50%"
paddingTop="10" paddingLeft="10" paddingRight="10">
<mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}">
<mx:columns>
<mx:DataGridColumn dataField="name" headerText="Name"/>
<mx:DataGridColumn dataField="phone" headerText="Phone"/>
<mx:DataGridColumn dataField="active" headerText="Active" itemRenderer="cellRenderer"/>
</mx:columns>
</mx:DataGrid>
</mx:Panel>
</mx:Application>
Como vez en la linea
Código HTML:
<mx:DataGridColumn dataField="active" headerText="Active" itemRenderer = "cellRenderer"/>
seteas el itemRenderer ahra necesitas un segundo archivo MXML llamado cellRenderer.mxml
cellRenderer.mxml
Código HTML:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="150" height="25">
<mx:Script>
<![CDATA[
[Bindable]
public var cards: Array = [ {label:"Visa", data:1},
{label:"MasterCard", data:2}, {label:"American Express", data:3} ];
[Bindable]
public var selectedItem:Object;
]]>
</mx:Script>
<mx:ComboBox x="0" y="0" width="150" dataProvider="{cards}" id="combo"></mx:ComboBox>
</mx:Canvas>
y listo ya tienes tu ComboBox dentro del Datagrid..
Saludos!!