当另一行进入编辑模式时,处于编辑模式的行上的jqgrid saveRow将失败

当另一行进入编辑模式时,处于编辑模式的行上的jqgrid saveRow将失败,jqgrid,Jqgrid,我正在使用jqGrid中的行编辑功能进行内联编辑,然后将数据保存在网格中,即使用clientArray作为url。我正在使用onsetrow函数将select行置于编辑模式 当通过“保存”按钮保存行时,此逻辑工作正常,但当在第一行仍处于编辑模式时单击另一行时,为第一行调用saveRow函数不会保存更改,并且行字段将恢复为其先前的值 我尝试过使用beforeSelectRow函数和不使用beforeSelectRow函数。如何在此上下文中正确保存行更改 逻辑如下: var iRow; ...

我正在使用jqGrid中的行编辑功能进行内联编辑,然后将数据保存在网格中,即使用clientArray作为url。我正在使用onsetrow函数将select行置于编辑模式

当通过“保存”按钮保存行时,此逻辑工作正常,但当在第一行仍处于编辑模式时单击另一行时,为第一行调用saveRow函数不会保存更改,并且行字段将恢复为其先前的值

我尝试过使用beforeSelectRow函数和不使用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;
    }
}

您应该检查以下几项:

检查iRow是否正确。如果调用SaveRow时需要保存的行仍然是可编辑的,则应该能够通过调用以下命令来获取行id,而无需保留全局变量: iRow=$'tr[aria selected=true],$GridMain.attr'id';//你有正确的身份证吗

如果您使用客户端排序,请检查是否至少有一个列设置为列模型上的键。例如,如果您有一个隐藏的Id列,则应如下设置: {name:'Id',index:'Id',label:'Id',可编辑:false,hidden:true,key:true}

另外,从我在代码中看到的情况来看,您正在使用RowPanel行编辑值?如果是这样,则可能需要在保存时将编辑的值发送回网格。否则,在编辑和保存时不需要显示和隐藏任何内容

希望这有帮助