現在、次のようなオーバーライドされた 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 セクションのポストデータの準備にあると推測していますが、単一のレコードではなくレコードのリストを使用してこのポストデータを準備する正しい方法が見つかりませんでした。
任意の提案/洞察をいただければ幸いです。
皆さんありがとう。