Tengo una aplicación una aplicación web hecha con ajax en la utilizo un grid que recoge los datos de una bd mysql, que a su vez recoge los datos de un formulario que sirve para agregar/actualizar datos de nuevos usuarios.
El problema es que cuando agrego un nuevo usuario desde el formulario este se almacena correctamente en la bd, pero el grid que utilizo no se recarga de forma automática como debería hacer al actualizarse la base de datos, sino que es necesario actualizar toda la página para que el nuevo registro se cargue en el grid.
Os muestro el código:
ésta es la función javascript que utilizo para conectar con el servidor ajax (la URL está correcta, lo he comprobado un montón de veces)
Código :
function guardarDatosUsuario(opcion){ if(opcion == 1){ //ALTA document.------.txtOpc.value = "alta"; } else{ // MODIFICACION document.------------.txtOpc.value = "mod"; } dojo.xhrPost ({ // The page that parses the POST request url: 'administracion/************.php', // Name of the Form we want to submit form: 'frmNuevoUsuario', contentType: "application/x-www-form-urlencoded; charset=utf-8", // Loads this function if everything went ok load: function (data) { //MENSAJE var mensaje = new dijit.Dialog({ title: "..........", style: "width: 400px; height: 200px" }); //alert("D:" + data); if(data == -1){ //ERROR. Se ha producido un error al modificar o dar de alta, así que doy un mensaje y no actualizo el tabbar mensaje.setContent("ERROR: Mensaje para el usuario<br>Esta es la segunda linea"); } else{ if(data == -2){ //ERROR. Ya existia un artículo con el mismo codigo... mensaje.setContent("Ya existe en la base de datos un artículo con el mismo código."); } else{ //CORRECTO //alert("D:" + data); //Tengo que recoger el id del cliente que acaba de dar de alta..... //document.frmCliente.txtIdCliente.value = idCliente; document.-----------------.value = data; //tabbar.forceLoad("d2",".........." + document.frmCliente.txtIdCliente.value); //tabbar.setTabActive("d2"); //Actualizo el formulario ???????????????????? dojo.byId(".....").innerHTML = data; editarUsuario(.......); editarUsuario(data); //Recarga el formulario frmNuevoUsuarios con los datos del articulos seleccionado dojo.xhrGet({ url: ".........." + document.frmNuevoUsuario.txtIdUsuario.value, // Loads this function if everything went ok load: function (data) { dojo.byId("---------------").innerHTML = data; }, // Call this function if an error happened error: function (error) { //Pongo un mensaje indicando al usuario que ha habido un error.... //alert("Se produjo un error al dar de alta en la base de datos al nuevo cliente. " + error); //MENSAJE var mensaje = new dijit.Dialog({ title: "***********", style: "width: 400px; height: 200px" }); mensaje.setContent("ERROR: Se produjo un error al editar el artículo<br>" + error); mensaje.show(); } }); //creo que el programa no llega a pasar por aquí //Recargamos el grid....?????? gridUsuarios.clearAll(); //gridUsuarios.load("administracion/getGridBuscarUsuarios.php"); gridUsuarios.updateFromXML("administracion/getGridBuscarUsuarios.php"); if(opcion == 1){ //ALTA mensaje.setContent("El artículo se dió de alta correctamente en la base de datos."); } else{ //MODIFICACIÓN mensaje.setContent("El artículo se modificó correctamente en la base de datos."); } } } mensaje.show(); }, // Call this function if an error happened error: function (error) { //Pongo un mensaje indicando al usuario que ha habido un error.... //alert("Se produjo un error al dar de alta en la base de datos al nuevo cliente. " + error); //MENSAJE var mensaje = new dijit.Dialog({ title: , style: "width: 400px; height: 200px" }); mensaje.setContent("ERROR: Mensaje para el usuario<br>" + error); mensaje.show(); } }); } </script>
este es el código del grid que utiliza la aplicación
Código :
gridUsuarios = new dhtmlXGridObject("articulos_grid"); gridUsuarios.setImagePath("componentes/dhtmlxGrid/codebase/imgs/"); gridUsuarios.setHeader("id_usuario,login,nombre,ap ellidos,email,dni,movil,fecha_alta,fecha_baja,perm isos,E, B"); //gridUsuarios.setInitWidths("90,200,90,90,25,25"); gridUsuarios.setInitWidths("30,50,60,70,40,40,50,2 0,20,30,25,25"); gridUsuarios.setColTypes("ro,ro,ro,ro,ro,ro,ro,ro, ro,ro,ro,ro"); gridUsuarios.setColAlign("center,left,left,left,le ft,left,left,left,left,left,center,center"); gridUsuarios.setSkin("light"); //forma en la que buscará en los distintos campos gridUsuarios.attachHeader("#text_search,#text_filt er,#text_filter,#text_filter,#select_filter,#cspan ,#cspan,#cspan"); //gridUsuarios.attachHeader("#text_search,#text_filt er,,#text_filter,#cspan,#cspan,#cspan"); //gridUsuarios.attachHeader("#text_search,#text_filt er,,#combo_filter,#cspan,#cspan,#cspan"); gridUsuarios.setColSorting("connector,str,str,str, str,str,str,str,str,str,img,img"); //gridUsuarios.enableSmartRendering(true); //disable tooltips for first column gridUsuarios.enableTooltips("true,true,true,true,f alse,false");
gracias de antemano por vuestra ayuda