Как передать несколько строк, отредактированных в jqgrid, на контроллер сервера? - PullRequest
0 голосов
/ 13 февраля 2012

Я новичок в jqgrid.

Я хочу передать несколько строк, отредактированных в jqgrid, для прохождения контроллера сервера MVC. Контроллер ожидает строковый тип данных JSON.

как мой jsp передает все строки в контроллер?

jQuery ("# ​​save"). Click (function () { alert («enter save fn»);

var gridData=jQuery("#gridList").jqGrid('getGridParam','data');

    jQuery.ajax({
      url         : '/uip/web/p2/saveEmployeeList.dev'
      ,type        : 'POST'
      ,cache       : false
      ,data        : JSON.stringify(gridData)
      ,contentType : 'application/json; charset=utf-8'
      ,dataType    : 'json'
  })         

});

Я печатаю HttpServletRequest в контроллере. существует одна строка.

даже небольшая подсказка была бы полезна.

1 Ответ

3 голосов
/ 13 февраля 2012

Если я вас правильно понимаю, вы хотите сохранить все отредактированные строки одним действием 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);
});

Вы можете изменить или оптимизировать некоторые вещи, но в основном это должно сработать или дать вам представление о том, как выполнить то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...