当行处于编辑模式(inlinde编辑)并且用户单击删除(navgrid)时,我遇到传递其他删除数据的问题。
这是我的代码:
.navGrid('#' + childGridPagerID, {add: false,edit: true,del: true, cancel: true, refresh: true, view: true, search:false},{},
{// edit options
editCaption: "Exercise Special Note",template: template,
errorTextFormat: function (data) {
return 'Error: ' + data.responseText
},
},
{ // del options
mtype:"POST", reloadAfterSubmit:true, serializeDelData: function (postdata) {
var selRowId = $("#" + childGridID).jqGrid ('getGridParam', 'selrow');
//console.log(selRowID);
if ($("#"+selRowId).attr("editable") === "1") {
$("#" + childGridID).editRow(selRowId, false);
var rowdata = $("#" + childGridID).getRowData(selRowId);
}
console.log(rowdata);
// append postdata with any information
}
}
)
我知道文档说getRowData在编辑模式下不起作用所以我试图在调用getRowData之前禁用编辑模式,但仍然在控制台日志中获取html而不是真实数据。我还看到我可以先保存行,然后在删除之前获取我的数据,问题是大多数字段都是必需的,用户可能会删除该行而不填写所有字段,这会提示用户输入必填字段
答案 0 :(得分:1)
如果我正确理解您的问题,您应该致电restoreRow
或saveRow
而不是editRow
内的serializeDelData
。顺便说一句postdata
包含删除行的ID,因此您不需要使用.jqGrid ('getGridParam', 'selrow')
来获取相同的信息。修改后的代码可以是:
serializeDelData: function (postdata) {
var rowId = postdata.id; // or postdata[this.p.prmNames[id]]
if ($("#"+rowId).attr("editable") === "1") {
$(this).restoreRow(rowId);
var rowdata = $(this).getRowData(selRowId);
console.log(rowdata);
}
// append postdata with any information
...
return postdata;
}
顺便说一下,您可以考虑使用另一个回调来扩展发布到服务器的信息。例如,onclickSubmit
的目标正是提供此类信息。它可以返回{}
或将与主要信息合并的对象。代码可能类似于
onclickSubmit: function (deleteOptions, rowids) {
$(this).jqGrid("restoreRow", rowids);
var rowData = $(this).jqGrid("getRowData", postdata);
return {id1: rowData.id1, id2: rowData.id2};
}