目前,我有一个覆盖的 delGridRow 调用,看起来像这样(归功于 Krams 和他的 Spring 教程):
var row = $('#grid').jqGrid('getGridParam','selrow');
$('#grid').jqGrid( 'delGridRow', row,
{ url:'deleteRequirement.html',
recreateForm: true,
beforeShowForm: function(form) {
//Change title
$(".delmsg").replaceWith('<span style="white-space: pre;">' +
'Delete selected record?' + '</span>');
//hide arrows
$('#pData').hide();
$('#nData').hide();
},
reloadAfterSubmit:true,
closeAfterDelete: true,
serializeDelData: function (postdata) {
var rowdata = $('#grid').getRowData(postdata.id);
// append postdata with any information
return {id: postdata.id, oper: postdata.oper, reqID: rowdata.reqID};
},
afterSubmit : function(response, postdata)
{
var result = eval('(' + response.responseText + ')');
var errors = "";
if (result.success == false) {
for (var i = 0; i < result.message.length; i++) {
errors += result.message[i] + "<br/>";
}
} else {
$('#msgbox').text('Entry has been deleted successfully');
$('#msgbox').dialog(
{ title: 'Success',
modal: true,
buttons: {"Ok": function() {
$(this).dialog("close");
}
}
});
}
// only used for adding new records
var newId = null;
return [result.success, errors, newId];
}
});
else {
$('#msgbox').text('You must select a record first!');
$('#msgbox').dialog(
{ title: 'Error',
modal: true,
buttons: {"Ok": function() {
$(this).dialog("close");}
}
});
}
为了添加对多选删除的支持,我将“selrow”第一行更改为:
var rowList = jQuery("#grid").getGridParam('selarrrow');
在此之后,事情开始迅速变得粗略。规范说默认的 delGridRow 可以接受要删除的输入记录数组。我进行了以下更改以尝试使用新的“rowList”变量:
$('#grid').jqGrid( 'delGridRow', rowList, ...
我仍然在我的 Spring 控制器中点击我的 deleteRequirement.html URL,但似乎只有最后一条记录可以做到。我猜问题出在 serializeDelData 部分的 postdata 准备中,但我还没有找到正确的方法来使用记录列表而不是单个记录来准备这个 postdata。
任何建议/见解将不胜感激。
谢谢大家。