如何将jqgrid中编辑的多行传递给服务器控制器?

发布于 2025-01-04 13:32:00 字数 612 浏览 1 评论 0原文

我是 jqgrid 的新手。

我想传递在 jqgrid 中编辑的多行来传递 MVC 服务器控制器。 控制器需要 json 字符串类型的数据。

我的jsp如何将所有行传递给控制器​​?

jQuery("#save").click( 函数(){ 警报(“输入保存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 。存在一排。

即使是一点点线索也会有帮助。

I'm new in jqgrid.

I want to pass multi rows edited in jqgrid to pass MVC server controller.
controller expects json string type of data.

how my jsp pass all rows to controller?

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

});

I print out HttpServletRequest in controller. there is one row exist.

even little clue would be helpful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心在旅行 2025-01-11 13:32:00

如果我理解正确的话,您希望在编辑任何行后通过一个 Ajax 操作而不是 Ajax 请求保存所有编辑的行?

如果是这样,这可能是解决方案。您可以在配置中使用“clientArray”选项作为 URL 参数,而不是使用 Ajax。这会导致 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);
});

您可能应该修改或优化某些内容,但在基本情况下,这应该有效或让您了解如何完成你想要什么。

If I understand you correctly you want to save all edited rows by one Ajax action instead of a Ajax request after any row is edited?

If so, this might be the solution. Instead of Ajax you use the 'clientArray' option in your configuration as your URL parameter. This causes jqGrid to save every edited row internally in JavaScript and post nothing to your server.

With a onclick on a save button you could do something as follows:

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

Also important is to specify a save event in your grid:

$('#paymentsgrid').jqGrid('saveRow', paymentController.lastsel, null, 'clientArray', null, function(rowId) {
    changedRows.push(rowId);
});

You might should modify or optimize some things but in the basic, this should work or give you an idea how to accomplish what you want.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文