jqGrid - Botones predeterminados Agregar / Editar - Procesando la respuesta del servidor

StackOverflow https://stackoverflow.com/questions/1234461

  •  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!

¿Fue útil?

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']
        }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top