jqGrid — кнопки добавления/редактирования по умолчанию — обработка ответа сервера
-
22-07-2019 - |
Вопрос
Я работаю над своей первой реализацией jqGrid.Я использую стандартные кнопки добавления/редактирования, которые появляются в navGrid, но у меня возникают проблемы с определением того, как обрабатывать ответ сервера, когда я нажимаю «Отправить» в формах редактирования/добавления.
.navGrid("#product-codes-footer",{edit:true,add:true,del:false},
{afterShowForm:afterShowEdit}, {afterShowForm:afterShowAdd} );
Есть ли стандартный параметр обратного вызова или события, который мне где-то не хватает?Есть ли способ определить, как saveRow
вызывается или существует ли метод обратного вызова успеха/ошибки по умолчанию, который я могу реализовать?
Любое направление будет высоко оценено!!!
Решение
Кажется, есть пара параметров событий, которые я не смог полностью прочитать и понять...
API --> http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing#editgridrow
использование параметров событий afterSubmit и afterComplete позволяет мне обрабатывать ответ сервера и обновлять форму.
--Дэн
РЕДАКТИРОВАТЬВот пример используемого кода...
.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];
}
Другие советы
Я видел несколько способов сделать это:
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(serverResponse, postdata, formid), где
- ответ - это данные, возвращаемые с сервера (если есть)
- postdata - массив, это данные, отправляемые на сервер
- formid - это идентификатор формы
сеткаЗавершена
Это стреляет после того, как все данные загружаются в сетку, и все остальные процессы завершены.
ошибка загрузки xhr, st, ошибкаФункция, которая будет вызываться в случае сбоя запроса.Функция передается три аргумента:Объект xmlhttprequest (xhr), строка, описывающая тип ошибки (ST), которая произошла, и необязательный объект исключения (ERR), если это произошло.
Есть удобные/полезные PDF-документы (немного устаревшие):http://www.scribd.com/doc/17094846/jqGrid.
Вы можете попробовать это:
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']
}