Estoy desarrollando un sistema en capas cuyo front end esta desarrollado en flex. En una de las interfases tengo un acordeon (“<mx:Accordion”) con tres pestañas, que agrupan los controles según lo que el usuario tiene que interactuar. En la primera pestaña tengo una sección de carga con diferentes controles y un datagrid en el que se muestran los datos. La segunda pestaña es similar. Cuando deseo cargar los datos en los dos datagrid la primera vez que ingreso solo me los carga en el datagrid de la primera pestaña y no en el datagrid de la segunda. La segunda vez que ingreso si me permite cargar los datos en la segunda pestaña. El código de carga es el síguete:
datagrid primera pestaña
Código:
datagrid segunda pestañaprivate function cargarLiquidacion(liquidacion:int):void{ gateway = new Coneccion( "http://localhost/sistemaAdicional/gateway.php" ); gateway.call( "source.Servicio.Servicio.servicioReadNestor", new Responder(respuestaServicioReadNestor, error) ,liquidacion); } private function respuestaServicioReadNestor(Responder:Object):void{ if((typeof Responder)=='string'){ error(Responder); }else{ var oDatos:Object; var i:int=0; while (i < Responder[0].length){ oDatos= new Object; oDatos.idServicio=Responder[0][i]['idServicio']; //cada valor de retorno se carga de la misma forma //oDatos.<campo>=Responder[<indice del array de objetos>][<indice del objeto>]['<atributo>'] //<campo>: este coincide con el dataField de las columas del datagrid oElementoDtgServicio.addItem(oDatos); i++; } dtgServicios.dataProvider=oElementoDtgServicio; } }
Código:
oElementoDtgServicioEquipamiento y oElementoDtgServicio son variables bindeables (creo que se dice así)(“ [Bindable]”) tipo ArrayCollection.private function servicioEquipamientoRead(VEidServicioEquipamiento:int, VEfechaDesde:String, VEfechaHasta:String, VEhorarioInicio:String, VEhorarioFin:String, VEdistanciaKmDesde:int, VEdistanciaKmHasta:int, VEidEquipamientoAdicional:int, VEidUsuario:int, VEidLiquidacionFinal:int):void{ gateway = new Coneccion( "http://localhost/sistemaAdicional/gateway.php" ); gateway.call( "source.Servicio.ServicioEquipamiento.servicioEquipamientoRead", new Responder(respuestaServicioEquipamientoRead, error) ,VEidServicioEquipamiento, VEfechaDesde, VEfechaHasta, VEhorarioInicio, VEhorarioFin, VEdistanciaKmDesde, VEdistanciaKmHasta, VEidEquipamientoAdicional, VEidUsuario, VEidLiquidacionFinal); } private function respuestaServicioEquipamientoRead(Responder:Object):void{ if((typeof Responder)=='string'){ error(Responder); }else{ var oDatos:Object; var i:int=0; while (i < Responder[0].length){ oDatos= new Object; oDatos.idServicioEquipamiento=Responder[0][i]['idServicioEquipamiento']; . . oElementoDtgServicioEquipamiento.addItem(oDatos); //Alert.show("--> "+ oElementoDtgServicioEquipamiento.getItemAt(i).horasServicio); //hasta acá llegan todos los datos. Cuando le asigno el ArrayCollection como dataProvider el datagrid no lo muestra i++; } DtgServicioEquipamiento.dataProvider=oElementoDtgServicioEquipamiento; } }
Las funciones las disparo desde otra función que se lanza en el evento focusIn del acordeón. Los parámetros los pasos a través de variables contenidas en paquetes singleton
gracias
salu2