Foro

Drag and Drop entre dos GridPanel con PHP y Postgres

1
Hola tengo un formulario con dos TabPanel, el primer tabPanel contiene un grid con registros de alumno, utilizo un actioncolumn en el cual invoco el evento de "EditarRegistro" el cual despliega un segundo TabPanel con un formulario con tres textfield y dos combobox con informacion del estudiante, en la parte inferior de este formulario tengo un Drag and Drop entre dos GridPanel, el primer grid (Lista de Asignaturas) despliega una lista con las asignaturas (Fisica, Quimica, Informatica etc) que tendra asignado el estudiante estos son extraidos desde la BD, y el otro grid (Asignaturas Seleccionadas) va a contener los items seleccionados desde el grid principal con el evento Drag and Drop (arrastrar y soltar), como hago para enviar los datos del grid (Asignaturas Seleccionadas) mediante ajax y guardar en la base de datos, y como recuperarlos es decir si yo le asigne a Juan Ochoa las asigaturas de Fisica e Informatica, cuando pulse en el actioncolumn de la lista del primer TabPanel, me despliegue en el grid (Asignaturas Seleccionadas) los items almacenados y me de la oportunidad de quitar o agregar mas items.. el ejemplo esta basado en el demo de la pagina oficial de sencha el link es el siguiente: http://docs.sencha.com/extjs/4.2.2/#!/example/build/KitchenSink/ext-theme-neptune/#dd-grid-to-grid

Agradezco su pronta Ayuda...

Saludos.

0
Hola J_likas! (Puedes cambiar tu nombre y avatar desde tu perfil ;) )

Imagino que ya lograste hacer el drag and drop de una tabla a otra, bueno una vez que el usuario ha seleccionado las materias y ya esta listo, a la hora de guardar lo unico que tienes que hacer es iterar el store del segundo grid y capturar el identificador de cada materia selccionada, estos indentificadores son los que enviaras en la petición ajax para guardar, algo así:

var materias = [];
grid.getStore().each(function(item){
    materias.push(item.get('materia_id'));
});
Ext.Ajax.request({
    url      : 'api/servicio/para/guardar',
    method   : 'POST',
    jsonData : {materias:materias,otra:"cosa que quieras enviar"},
    success  : function(){
        //hacer lo que quieras despues de guardar
    }
});
El codigo anterior recolecta los ID's de la materias y los manda en la petición Ajax. Ese código debería estar en un controller ;)

Para el caso de cargar la información que ya se ha guardado anteriormente, te recomiendo que crees un servicio que te regrese la lista de materias seleccionadas para ese alumno y en el store del segundo grid le asignes la URL para que solamente hagas un "load()" y te cargue automáticamente las materias ya seleccionadas.

Un saludo.

PS: si esta respuesta te ayudo, dale puntos!! si resolvio tu problema marcala como solución del lado izquierdo de este post :)
Lukas: Excelente funciono a la perfeccion, gracias ! 31/10/2013

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.