我使用了Oleg的jqGrid 4.9.3-pre-free jqGrid。我想添加一条新记录并在没有模态窗口的情况下进行编辑。
我这样做:
我找到了解决方案。感谢Oleg!
var flag = false;
....
afterSaveCell: function(rowid, cellname, value, iRow, iCol) {
$('#' + lastRowId).attr("id", respText);
},
afterSubmitCell: function(serverresponse, rowid, cellname, value, iRow, iCol){
var rows = $("#contract_subgrid")[0].rows;
lastRowId = rows[rows.length-1].id;
var response = (serverresponse.statusText).trim();
if (response == 'OK'){
respText = serverresponse.responseText;
if(respText=='0' || respText==""){
return [true,""];
}
else {
$(this).jqGrid('setCell', lastRowId, 'id', respText);
$(this).jqGrid('addRowData', undefined, {});
return [true,""];
}
}else{
return [false,respText];
}
},
loadComplete: function () {
if(flag === false) {
$(this).jqGrid('addRowData', undefined, {});
flag = true;
}
},
答案 0 :(得分:0)
抱歉,但我不了解您要实施的方案。在我看来,单元格编辑(cellEdit: true
)的使用并不是最佳选择。无论如何,如果您使用默认值afterSubmitCell
,则永远不会调用cellsubmit:'clientArray'
。 addRowData
与id="0"
相同的用法并不好。您可以生成id重复项。你可以使用
$(this).jqGrid('addRowData', undefined, {});
代替。使用undefined
作为rowid将生成新的唯一 rowid。更好的是使用
$(this).jqGrid('addRow', {position: "last"});
和inlineNav
。您需要另外修复defaultValue: "Intim"
到defaultValue: "IN"
。
您可以在aftersavefunc
内定义inlineEditing
以在保存到服务器后更新rowid。您需要为其指定editurl
。查看jsfiddle.net/OlegKi/tzp91wnf/2,您需要在其中添加editurl
和aftersavefunc
原因。您需要同时使用.attr("id", newId)
和.jqGrid('setCell', rowid, 'id', newId)
来更新后端生成的ID。