Estoy intentando mostrar en un DataGrid lo que devuelve un servicio de acceso a base de datos. Me inserta las líneas pero en blanco. No sé lo que ocurre, aquí pongo el código de l componente MXML:
<?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>