JqGrid - кнопки добавления/редактирования по умолчанию - обработка ответа сервера

Я работаю над своей первой реализацией jqGrid. Я использую стандартные кнопки добавления/редактирования, которые появляются в navGrid, но у меня возникают проблемы с идентификацией процесса обработки ответа сервера при нажатии кнопки "Отправить" в формах редактирования/добавления.

.navGrid("#product-codes-footer",{edit:true,add:true,del:false},
{afterShowForm:afterShowEdit}, {afterShowForm:afterShowAdd} );

Есть ли стандартный параметр обратного вызова или события, который мне где-то не хватает? Есть ли способ определить, как вызывается saveRow или есть метод обратного вызова успеха/ошибки по умолчанию, который я могу реализовать?

Любое направление было бы высоко оценено!!!

Ответы

Ответ 1

Кажется, есть пара параметров событий, которые я не смог полностью прочитать и понять...

API → http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing#editgridrow

используя параметры события afterSubmit и afterComplete, позвольте мне обработать ответ сервера и обновить форму.

- Dan

ИЗМЕНИТЬ Вот пример используемого кода...

.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];
        }

Ответ 2

Есть несколько способов, которые я видел для этого:

 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
        }   
     );  

Из документации:

afterComplete <Я > Это событие срабатывает сразу после того, как все действия и события завершены и строка вставляется или обновляется в сетке. <Я > afterComplete (serverResponse, PostData, FormID) где

  • Ответ - это данные, возвращенные с сервера (если есть) 
  • postdata массив, это данные, отправленные на сервер
  • formid является идентификатором формы

gridComplete <Я > Это срабатывает после того как все данные загружаются в сеть и все остальные процессы завершены.

loadError xhr, st, err <Я > Функция, которая вызывается, если запрос не удается. Функция получает передается три аргумента: XMLHttpRequest объект (XHR), строка описывающий тип ошибки (ст), что произошло, и необязательный объект исключения (ERR), если одно место.

Имеется удобный/полезный PDF-документ (немного устаревший): http://www.scribd.com/doc/17094846/jqGrid.

Ответ 3

Вы можете попробовать следующее:

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']
        }