Estoy intentando mostrar lo que devuelve un servicio de consulta de base de datos en un DataGrid pero me inserta las filas en blanco. Aquí pongo el código del componente, no sé lo que ocurre:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:local="*"
xmlns:view="es.caser.caserflex.flex.view.*"
xmlns:comp="es.caser.comun.flex.components.*"
initialize="init()"
creationCompleteEffect="">
<mx:Script>
<![CDATA[
import mx.collections.*;
import mx.controls.Alert;
import flash.filters.BlurFilter;
import es.caser.comun.base.AppResponder;
import es.caser.comun.flex.Util;
import es.caser.caserflex.base.BaseServiceFacade;
import es.caser.caserflex.base.BaseResponseModel;
import es.caser.caserflex.base.mapas.TRADUCTOR_IN;
import es.caser.caserflex.base.mapas.TRADUCTOR_OUT;
import com.flexspy.FlexSpy;
public function init():void { //Alert.show("view init: "+this)
this.visible = false;
//FlexSpy.show();
start();
}
public function start():void { //Alert.show("view start: "+this);
this.visible = true;
blur.play([this], true);
}
[Bindable]
private var model:BaseResponseModel = BaseResponseModel.getInstance();
[Bindable]
private var modelData:Object = null;
[Bindable]
private var dp:ArrayCollection = null;
private function lanzarServicio():void {
var mapIn:TRADUCTOR_IN = new TRADUCTOR_IN();
// Define input variables:
mapIn.numeroLimite = numero.value;
// Define response function
var responder:AppResponder = null, response:Function = TRADUCTORResponse; // null / processResponse;
if (response != null) responder = new AppResponder(response);
BaseServiceFacade.getInstance().callTRADUCTOR(mapI n, responder); // .callProcess / .process (cfw ver)
}
private function TRADUCTORResponse(res:Object):void {
var name:String = Util.strDecapital(res.token.message.body[0])+"Data"; // model output name
var type:String = "fault";
if (res.hasOwnProperty("result")) {
type = "result";
} // response type
if (type == "result") {
model[name] = res[type];
var i:int = 0;
Alert.show(modelData.ingles.length);
var filas:Array = new Array();
for (i=0;i<modelData.ingles.length;i++){
var fila:Array = [{ingles:modelData.ingles[i],frances:modelData.frances[i],aleman:modelData.aleman[i]}];
filas.push(fila);
}
dp = new ArrayCollection(filas);
} else {
model[name] = new TRADUCTOR_OUT();
}
}
private function traceResponse():void {Alert.show(Util.traceObject(model), "traceResponse");}
]]>
</mx:Script>
<mx:Binding source="model.tRADUCTORData" destination="modelData" />
<mx:Blur id="blur" duration="500" blurXFrom="0.1" blurXTo="99.9" blurYFrom="0.1" blurYTo="99.9"/>
<mx:VBox height="100%">
<mx:HBox width="100%">
<mx:NumericStepper value="1" minimum="1" maximum="10" stepSize="1" enabled="true" id="numero"/>
<mx:Button label="Traducir" id="traducir" click="lanzarServicio()"/>
</mx:HBox>
<mx:DataGrid id="listOfThings" dataProvider="{dp}">
<mx:columns>
<mx:DataGridColumn headerText="Inglés" dataField="ingles"/>
<mx:DataGridColumn headerText="Francés" dataField="frances"/>
<mx:DataGridColumn headerText="Alemán" dataField="aleman"/>
</mx:columns>
</mx:DataGrid>
</mx:VBox>
</mx:Canvas>