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