jqGrid 编辑单元格和 afterSubmitCell
jqGrid Edit Cell and afterSubmitCell
我使用 jqGrid 4.9.3-pre - Oleg 提供的免费 jqGrid。我想添加一条新记录并在没有模态的情况下进行编辑 window。
我这样做:
- 在 loadComplete 上我添加了一个新的空记录,id=0.Here 我们可以添加一个
新记录。
- 从数据库中添加新条目后获取其 ID。替换 ID 上的 0 值。
- 添加新记录后会创建另一个空行,依此类推。
我认为问题是小区仍然处于活动状态?
我找到了解决方案。谢谢奥列格!
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;
}
},
抱歉,我不明白你想要实现的场景。在我看来,使用单元格编辑 (cellEdit: true
) 并不是最好的选择。如果您使用默认的 cellsubmit:'clientArray'
,无论如何都不会调用 afterSubmitCell
。 addRowData
同id="0"
的用法不好。您可以生成 id 重复项。您可以使用
$(this).jqGrid('addRowData', undefined, {});
代替。使用 undefined
作为 rowid 将生成新的 unique rowid。更好的方法是使用
$(this).jqGrid('addRow', {position: "last"});
和inlineNav
。您还需要将 defaultValue: "Intim"
修复为 defaultValue: "IN"
。
你可以在inlineEditing
里面定义aftersavefunc
来更新保存到服务器后的rowid。您需要为其指定 editurl
。查看 jsfiddle.net/OlegKi/tzp91wnf/2 需要添加 editurl
和 aftersavefunc
的原因。您需要同时使用 .attr("id", newId)
和 .jqGrid('setCell', rowid, 'id', newId)
来更新后端生成的 ID。
我使用 jqGrid 4.9.3-pre - Oleg 提供的免费 jqGrid。我想添加一条新记录并在没有模态的情况下进行编辑 window。
我这样做:
- 在 loadComplete 上我添加了一个新的空记录,id=0.Here 我们可以添加一个 新记录。
- 从数据库中添加新条目后获取其 ID。替换 ID 上的 0 值。
- 添加新记录后会创建另一个空行,依此类推。
我认为问题是小区仍然处于活动状态?
我找到了解决方案。谢谢奥列格!
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;
}
},
抱歉,我不明白你想要实现的场景。在我看来,使用单元格编辑 (cellEdit: true
) 并不是最好的选择。如果您使用默认的 cellsubmit:'clientArray'
,无论如何都不会调用 afterSubmitCell
。 addRowData
同id="0"
的用法不好。您可以生成 id 重复项。您可以使用
$(this).jqGrid('addRowData', undefined, {});
代替。使用 undefined
作为 rowid 将生成新的 unique rowid。更好的方法是使用
$(this).jqGrid('addRow', {position: "last"});
和inlineNav
。您还需要将 defaultValue: "Intim"
修复为 defaultValue: "IN"
。
你可以在inlineEditing
里面定义aftersavefunc
来更新保存到服务器后的rowid。您需要为其指定 editurl
。查看 jsfiddle.net/OlegKi/tzp91wnf/2 需要添加 editurl
和 aftersavefunc
的原因。您需要同时使用 .attr("id", newId)
和 .jqGrid('setCell', rowid, 'id', newId)
来更新后端生成的 ID。