Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/11/2007, 15:20
Avatar de SinguerInc
SinguerInc
 
Fecha de Ingreso: octubre-2007
Ubicación: Barcelona, España
Mensajes: 551
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: Duda Sobre Datagrid En Adobe Flex 2

Si, ok, ya entendi que quieres hacer, a ver, es un tema bastante complejo, paso a explicarte:

ATENCION: Cada vez que he escrito Bindable se escribe entre corchetes....intentente varias veces pero lo muestra mal entre los tag "CODE"

Tiene varias soluciones posibles:

1. (la que haria yo, la mas flexible pero la mas complicada)
Tienes que crear un evento, una subclasse que extiende la classe Event, y esta classe tendra un objeto dentro que guardara la informacion sobre el nuevo alumno, una vez creado el alumno, el componente (la ventana form), emitira un evento (dispatchEvent) de esta subClasse, que vendra registrado por un listener que se encuentra en la aplicacion donde tienes tu datagrid.
Hacer esto es algo complicado, si quieres te puedo hacer un ejemplo en un file nuevo para que veas como funciona ya que no tengo tus datos (RemoteObject)

2. la otra, mas facil (digamos mas facil...) es declarar una variable con "binding", o sea:

Bindable
public var alumnos:ArrayCollection = new ArrayCollection();

entonces en tu RemoteObject como "result" llamaras la siguiente funcion:

private function llenarDgAlumnos(result:ResultEvent):void
{
alumnos = ArrayCollection(Array(event.result));
}


y despues tendras en tu DataGrid lo siguiente


<mx:DataGrid id="dgAlumno" dataProvider="{alumnos}" x="10" y="132" width="820" height="266">
<mx:columns>....
....


de este modo, el datagrid registra cada cambio que recibe la variable alumno y actualiza la lista.

ok, hasta ahi el tema de la actualizacion esta resuelto!.

ahora la segunda parte...

en tu componente (dentro de el), donde tienes el form para ingresar los datos...tienes que declarar una variable "publica"


Bindable
public var alumnosEnForm:ArrayCollection;


y en tu aplicacion tendras el siguiente script:


login.alumnosEnForm = alumnos;


esto quiere decir que podras escribir directamente desde la ventana en una variable que se encuentra en la aplicacion.
Y aca el otro tema...que es lo que no entendi como haces (y por eso tienes que cargar de nuevo el flash para ver los cambios)

Cuando tu creas un nuevo alumno estaras tambien creando un objeto o classe para guardar los datos y mandarlos a la base de datos, este mismo objeto lo debes escribir en el ArrayCollection....pero ojo!, deben tener el mismo formato, o sea, como resultado en la ventana haras algo asi, creas un nuevo alumno y lo metes en el ArrayCollection


var obj:Object = new Object();
obj.matricula = "xxxxx";
obj.nombre_alumno = "Pippo";
obj.apaterno_alumno = "Apellido1";
obj.amaterno_alumno = "Apellido2";
obj.semestre = 2;

alumnosEnForm.addItem(obj);


y listo, ahi se actualizara. recuerda que tambien en el script debes salvar en el database.

Este script obviamente que esta incompleto y es una guia para que entiendas mas o menos que es lo que tienes que hacer, espero que te sirva para tener una idea y desarrollarla a fondo.

Saludos.

Última edición por SinguerInc; 29/11/2007 a las 15:42