目前,我有一個重寫delGridRow調用看起來像這樣(信貸Krams和他的春天教程):如何使用jqGrid,multiselection和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, ...
我還在打在我的春節,我的控制器URL deleteRequirement.html,但只有最後一個記錄似乎使它。我猜測問題是在serializeDelData部分的postdata準備中,但我還沒有找到正確的方法來準備這個postdata的記錄列表,而不是單個記錄。
任何建議/見解,將不勝感激。
謝謝大家。
奇怪的是,我的服務器得到postdata爲「false,false」,而不是我試圖刪除的記錄ID。 相反,可能會更容易使用默認的jqGrid delRowData調用,然後單獨(或者可能通過onClickSubmit調用調用AJAX調用來將所選行發送到服務器? – Raevik 2012-04-26 19:54:12
@Brent:你應該調試問題。首先,您應該在返回之前在'serializeDelData'中包含alert(postdata.id);'和alert(reqIDList.join());'。順便說一下,你使用** jqGrid的最後一個**版本嗎?如果沒有,你應該將'$(this).jqGrid(「getCell」,ids [i],「reqID」)'替換爲'$(「#grid」)。 「)'。 – Oleg 2012-04-26 20:02:07
所以它看起來像postdata.id調用獲取分頁的jqGrid模型id而不是來自記錄本身的reqID值。可能需要調用getRowData來獲取適當的值... 正如您可以想象的那樣,將行58傳遞給服務器對於執行數據庫刪除而不是實際的UID(在這種情況下爲reqID) 。 我的警報產生了:(58,59)和(假,假)。 我正在使用最新版本,但無論如何都要使用$(「#grid」)。我對推送電話的虛假錯誤感到好奇。規範說它需要rowID和列。 – Raevik 2012-04-26 20:28:12