Если я вас правильно понимаю, вы хотите сохранить все отредактированные строки одним действием Ajax вместо запроса Ajax после редактирования какой-либо строки?
Если это так, это может быть решением.Вместо Ajax вы используете опцию clientArray в своей конфигурации в качестве параметра URL.Это заставляет jqGrid сохранять каждую отредактированную строку внутренне в JavaScript и ничего не публиковать на вашем сервере.
Нажав кнопку «Сохранить», вы можете сделать следующее:
var changedRows = [];
//changedRows is a global array
if($('#save-rows').length) {
$('#save-rows').click(function() {
var postData = {}
$.each(changedRows, function(key) {
postData[key] = $('#paymentsgrid').jqGrid('getRowData', this);
});
$.post(baseUrl + '/controller/action', {
'data' : postData
}, function(response) {
$('<div></div>').html(response.content).dialog({
'title' : 'Message',
'modal' : true,
'width' : 800,
'height' : 400,
'buttons' : {
'OK' : function() {
$(this).dialog('close');
}
}
});
if(response.reload) {
$('#grid').trigger('reloadGrid');
}
}, 'json');
});
}
Также важночтобы указать событие сохранения в вашей сетке:
$('#paymentsgrid').jqGrid('saveRow', paymentController.lastsel, null, 'clientArray', null, function(rowId) {
changedRows.push(rowId);
});
Вы можете изменить или оптимизировать некоторые вещи, но в основном это должно сработать или дать вам представление о том, как выполнить то, что вы хотите.