現在、私はこのようになりますオーバーライドさdelGridRowコール(Kramsと彼の春のチュートリアルのクレジット)があります。複数選択削除のためのサポートを追加するためにjqGrid、マルチセレクション、および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, ...
が、私はまだ私の春のコントローラで私deleteRequirement.html URLを打つんだけど、唯一の最後のレコードがそれを作るように見えます。私は、問題は、serializeDelDataセクションのpostdataの準備にあると思っていますが、私はレコードのリストではなく、単一のレコードのこのpostdataを準備する正しい方法が見つかりませんでした。
提案/洞察力があれば幸いです。
ありがとうございます。
私のサーバーは、私が削除しようとしているレコードIDの代わりに、「間違っている」と誤ってpostdataを取得しています。 代わりに、デフォルトのjqGrid delRowData呼び出しを使用し、別々に使用する(または、おそらくonClickSubmit呼び出しでAJAX呼び出しを呼び出して選択した行をサーバーに送信する)でしょうか? – Raevik
@Brent:問題をデバッグする必要があります。まず、 'alert(postdata.id);'と 'alert(reqIDList.join());'を返す前に 'serializeDelData'に含める必要があります。ちなみに、**最後の**バージョンのjqGridを使用しますか?そうでなければ '$(this).jqGrid(" getCell "、ids [i]、" reqID ")'を '$("#grid ")に置き換えてください。jqGrid(" getCell "、ids [i]、" reqID ")'。 – Oleg
したがって、postdata.id呼び出しが、レコード自体からのreqID値ではなく、ページ番号付けされたjqGridモデルIDを取得しているようです。おそらくgetRowDataコールが適切な値を取得する必要があります... 想像しているように、行58をサーバーに渡すことは、データレコードの実際のUID(この場合はreqID)ではなく、 。 アラートが生成されました:(58,59)および(false、false) 私は最新バージョンを使用していますが、とにかく$( "#grid")を実行しています。私はプッシュコールから間違った偽りが来ているのが不思議です。仕様ではrowIDとcolumnが必要だと言われています。 – Raevik