【问题标题】:How to pass multi rows edited in jqgrid to server controller?如何将 jqgrid 中编辑的多行传递给服务器控制器?
【发布时间】:2012-02-13 04:44:09
【问题描述】:

我是 jqgrid 的新手。

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

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

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

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

【问题讨论】:

    标签: jqgrid controller rows


    【解决方案1】:

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

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

    您可能应该修改或优化一些东西,但基本上,这应该可以工作或让您了解如何完成您想要的。

    【讨论】:

    • 非常感谢。 $.post(baseUrl + '/controller/action', { 'data' : postData } 有帮助。
    • 没问题,如果我的回答是你的解决方案,请接受:)
    • `我们如何调用 saveRow 事件?我打算在这里放一个外部保存按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    相关资源
    最近更新 更多