我是jqgrid的新人。
我想传递在jqgrid中编辑的多行来传递MVC服务器控制器。 controller期望json字符串类型的数据。
我的jsp如何将所有行传递给控制器?
jQuery(" #save")。click(function(){ 警告("输入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。存在一行。
即使是很少的线索也会有所帮助。
答案 0 :(得分:3)
如果我理解正确,您想在编辑任何行后,通过一个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);
});
您可能应该修改或优化某些内容,但在基本内容中,这应该有用,或者让您了解如何完成您想要的内容。