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

时间:2013-05-01 22:40:10

标签: jqgrid

我正在使用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;
    }
}

1 个答案:

答案 0 :(得分:0)

你应该检查几件事:

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

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

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

    希望这有帮助!