我正在使用jqGrid中的行编辑工具进行内联编辑,然后将数据保存在网格中(即使用“clientArray”作为url)。我正在使用“onSelectRow”功能将选择行置于编辑模式。
当通过保存按钮保存行时,此逻辑正常工作,但是当第一行仍处于编辑模式时单击另一行时,调用第一行的saveRow函数不保存更改,行字段恢复为先前的值。
无论是否使用“beforeSelectRow”功能,我都试过这个。如何在此上下文中正确保存行更改?
这是逻辑:
var iRow;
...
beforeSelectRow: function (id, e) {
if (id != null) {
if (iRow != null && iRow != id) {
SaveRow();
}
}
return true;
},
onSelectRow: function (id, status, e) {
if (id != null) {
if (iRow != null && iRow != id) {
SaveRow();
}
if (iRow == null) {
iRow = id;
$("#GridMain").jqGrid("editRow", id, false);
$("#RowPanel").show();
}
}
}
function SaveRow() {
// Save the current row if it was being edited
if (iRow != null) {
$("#GridMain").jqGrid("saveRow", iRow, { url: "clientArray" });
$("#RowPanel").hide();
iRow = null;
}
}
答案 0 :(得分:0)
你应该检查几件事:
检查iRow是否正确。如果在调用SaveRow时仍然可以编辑需要保存的行,则应该能够通过调用以下内容来获取行标识,而无需保留全局变量: iRow = $(' tr [aria-selected = true]',$("#GridMain"))。attr(' id'); //你有正确的身份证吗?
如果使用客户端排序,请检查列模型上是否至少有一列设置为键。例如,如果您有隐藏的Id列,则应将其设置为: {name:' Id',index:' Id',label:' Id',editable:false,hidden:true,key:true}
另外,根据我在您的代码中看到的内容,您正在使用"#RowPanel"行来编辑值?如果是这样,您可能需要在保存时将编辑后的值发送回网格。否则,在编辑和保存时,您不需要显示和隐藏任何内容。
希望这有帮助!