¿Como hacemos para cargar los datos de un registro de un grid en un formulario? Bien, hay diversas opciones (siempre a gusto del programador) así que aquí vamos a explicar una de ellas: asociar el evento ‘rowdblclick’ (doble click en una fila) a un handler que cargue el formulario con los datos del registro.
GestorCuentas.movimientosGrid.on('rowdblclick',function( grid, row, evt) {
var movRecord = GestorCuentas.movimientosDataStore.getAt(row);
GestorCuentas.movForm.getForm().load({
url : 'cargaMovimiento.php',
method: 'POST',
params: {
mov_id: movRecord.data.mov_id
},
waitMsg : 'Espere por favor'
});
});
En el API de ExtJS podemos comprobar que cuando asignamos una función al evento ‘rowdbclick’ vamos a recibir tres parámetros: el grid que ha generado el evento, el índice del registro dentro del store y un objeto con datos adicionales del evento
Para quedarnos con el registro, sólo tenemos que solicitarle al store del grid que nos devuelva aquel cuyo índice hemos recibido por parámetro
var movRecord = GestorCuentas.movimientosDataStore.getAt(row);
Ahora en movRecord tendremos el registro y podremos acceder a sus datos para quedarnos con el identificador del registro. Fijáos que en la definición del record del grid hemos incluído la Primary Key del registro en base de datos, aunque no lo estemos mostrando en el propio grid
Fijáos que el formulario que vamos a cargar tiene asignado un reader, de forma que podemos llamar al método load() del mismo para que automáticamente cargue los datos. Obviamente hay que indicarle que registro se va a cargar por lo que le pasamos como parámetro el mov_id del registro que hemos pedido al store
La instancia del formulario se la pedimos al FormPanel mediante el método getForm(). Esto nos devuelve un objeto Ext.form.BasicForm. Este método tiene un método load() al que le pasamos la configuración necesaria para hacer la carga
GestorCuentas.movForm.getForm().load({
url : 'cargaMovimiento.php',
method: 'POST',
params: {
// OJO, los datos del registro están en movRecord.data y no directamente en movRecord como podría pensarse
mov_id: movRecord.data.mov_id
},
waitMsg : 'Espere por favor'
});
primero que nada agradecer los buenos ejemplos que tienes, pero como hago para obtener todos los archivos para hacer la prueba, por que soy novato en ext y ando en busqueda de un buen ejemplo, si me puedes ayudar estaria muy agradecido.
Mis 2 grandes dolores de cabeza son :
1.- necesito mostrar un grid con 4 campos y al hacer click o double click en un registro de la lista, me muestre un formulario con todos los campos, por ser un formulario con casi 80 preguntas estaba pensando dividirlo en 4 tabpanel, no se si me puedes recomendar una mejor solucion o crees que es la correcta.
2.- Todos los campos son combobox. yo solo guardo su valor en bd sql osea 1 o 2 o 3… pero no se como hacer para recuperar la informacion y me pinte el combobox con el alias correspondiente y no con el valor de la base de datos…
mil gracias de antemano :(
Gracias por tu trabajo es excelente debido ha que son muy pocas las personas que se toman la libertad para explicar y mostrar ext . queria preguntarte si hay manera de ver este ejemplo en linea ? ya que intento correrlo local pero ya por encima se ve que hace falta mas clases como cargaMovimiento.php por ejemplo.
gracias por todo
Buenas Miguel,
Muchas gracias por el comentario, la verdad es que anima bastante a seguir haciendo cosas y publicarlas en libre. Sobre lo del ejemplo, la semana que viene espero poder subirlo al servidor y que podáis probarlo. Además también pondré un .zip para que se pueda descargar.
Un saludo
Buenas de nuevo Miguel,
Tomo nota de tus dos “dolores de cabeza” y a ver si preparo un pequeño ejemplo con lo que comentas, para que así también le quede al resto de usuarios de ExtJS.
Un saludo
Hola, que bien que compartes tus conocimientos de Ext, la verdad es que son pocos los que lo hacen, felicidades!!
Aprovecho para invitarte a una comunidad que esta creciendo rápidamente, somos los fanáticos de Ext jejejejeje puedes visitarnos en http://foro.quizzpot.com te invito a resgistrarte y juntos ayudarnos unos a otros :D
saludos
Muy buen tutorial para que; yo tambien soy nuevo en extjs veo que es una herramienta poderosa pero ahora tengo una inquietud similar a las de arriba tengo 2 grid uno es modal y tiene chekboxes y cuando selecciono a multiples con un boton mando un alert de los datos de las filas que he seleccionado pero mi inquietud es que quiero agregar esas filas al grid que no esta modal.
Espero me puedas ayudar por que no se como hacerlo.
Gracias que tengas un excelente dia.
vale viejo, me sirvio mucho
gracias por compartir!