jqGrid - Botones predeterminados Agregar / Editar - Procesando la respuesta del servidor
-
22-07-2019 - |
Pregunta
Estoy trabajando en mi primera implementación de un jqGrid . Estoy usando los botones estándar de agregar / editar que aparecen en navGrid, pero tengo problemas para identificar cómo procesar la respuesta del servidor cuando hago clic en Enviar en los formularios de edición / agregar.
.navGrid("#product-codes-footer",{edit:true,add:true,del:false},
{afterShowForm:afterShowEdit}, {afterShowForm:afterShowAdd} );
¿Hay alguna devolución de llamada estándar o parámetro de evento que me falta en alguna parte con respecto a esto? ¿Hay alguna manera de definir cómo se llama a saveRow
o hay un método de devolución de llamada predeterminado de éxito / error que pueda implementar?
¡Cualquier dirección sería muy apreciada!
Solución
Parece que hay un par de parámetros de eventos que no pude leer y comprender por completo ...
API - > http://www.trirand.com/jqgridwiki/doku.php ? id = wiki: form_editing # editgridrow
usar los parámetros de evento para afterSubmit y afterComplete me permite procesar la respuesta del servidor y actualizar el formulario.
--Dan
EDITAR Aquí hay un ejemplo del código utilizado ...
.navGrid(
"#product-codes-footer",
{edit:true,add:true,del:false},
{
afterShowForm:afterShowEdit,
afterSubmit:processAddEdit,
beforeSubmit:validateData,
closeAfterAdd: true,
closeAfterEdit: true
},
{
afterShowForm:afterShowAdd,
afterSubmit:processAddEdit,
beforeSubmit:validateData,
closeAfterAdd: true,
closeAfterEdit: true
}
);
function afterShowEdit(formId) {
//do stuff after the form is rendered
}
function afterShowAdd(formId) {
//do stuff after the form is rendered
}
function processAddEdit(response, postdata) {
var success = true;
var message = ""
var json = eval('(' + response.responseText + ')');
if(json.errors) {
success = false;
for(i=0; i < json.errors.length; i++) {
message += json.errors[i] + '<br/>';
}
}
var new_id = "1";
return [success,message,new_id];
}
Otros consejos
Hay algunas formas en que he visto hacer esto:
jQuery("#search_results").jqGrid({ url: host, datatype: "xml", mtype: "GET", // Handy to see the params passed. height: 200, width: 500, ... ... etc gridComplete: function() { var ids = jQuery("#search_results").getDataIDs(); if (ids.length Empty Result'); } else { $('#jqgrid_error').hide(); } }, loadError: function(xhr,st,err) { jQuery("#jqgrid_error").html("Type: "+ st +"; Response: "+ xhr.status + " "+xhr.statusText+''); } }).navGrid('#search_results_pager', {edit:true,add:false,del:false,search:true}, { afterComplete:processed, // processed is a function you define closeAfterEdit: true, reloadAfterSubmit:true } );
De la documentación:
afterComplete Este & nbsp; evento & nbsp; se dispara & nbsp; inmediatamente & nbsp; después de & nbsp; todas las & nbsp; acciones & nbsp; y & nbsp; los eventos & nbsp; se han completado & nbsp; y & nbsp; la & nbsp; fila & nbsp; está & nbsp; insertada & nbsp; o & nbsp; actualizada & nbsp; en & nbsp; la & nbsp; cuadrícula. afterComplete(serverResponse, postdata, formid) where
- respuesta & nbsp; es & nbsp; los & nbsp; datos & nbsp; devueltos & nbsp; de & nbsp; el & nbsp; servidor & nbsp; (si & nbsp; alguno)
- postdata & nbsp; una & nbsp; matriz, & nbsp; es & nbsp; los & nbsp; datos & nbsp; enviados & nbsp; a & nbsp; el & nbsp; servidor & nbsp; & nbsp;
- formid & nbsp; es & nbsp; la & nbsp; id & nbsp; de & nbsp; la & nbsp; forma & nbsp; & nbsp;
gridComplete
Esto & nbsp; se activa & nbsp; después de & nbsp; todos los & nbsp; los & nbsp; datos & nbsp; se & nbsp; se carga & nbsp; en & nbsp; la & nbsp; cuadrícula & nbsp; y & nbsp; todos & nbsp; otros & nbsp;
los procesos & nbsp; están & nbsp; completos.
loadError xhr, st, err
Una & nbsp; función & nbsp; a & nbsp; ser & nbsp; llamada & nbsp; si & nbsp; la & nbsp; solicitud & nbsp; falla. & nbsp; La & nbsp; función & nbsp; obtiene & nbsp; aprobada & nbsp;
tres & nbsp; argumentos: & nbsp; La & nbsp; XMLHttpRequest & nbsp; object & nbsp; (XHR), & nbsp; una & nbsp; cadena & nbsp;
describiendo & nbsp; el & nbsp; tipo & nbsp; de & nbsp; error & nbsp; (st) & nbsp; que & nbsp; ocurrió & nbsp; y & nbsp; un & nbsp; opcional & nbsp;
excepción & nbsp; object & nbsp; (err), & nbsp; if & nbsp; one & nbsp;
Hay documentos PDF útiles / útiles (un poco anticuados): http://www.scribd.com/doc/17094846/jqGrid .
Puedes probar esto:
navGrid('#gridpager',{view:true},{},{closeOnEscape:true},{afterSubmit:processAddEdit});
$.jgrid.search={
odata : ['equal', 'not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','like','does not contain'],
sopt:['eq','ne','cn','bw','ew']
}