jqGrid afterSaveCell在过滤后的网格上使用了错误的rowId

时间:2014-09-11 01:59:03

标签: jquery jqgrid

所以我有一个网格,里面有2行。

slappy, 1, 10, 100
happy, 2, 20, 200

然后我在网格上过滤并将列表缩小到只有1行

happy, 2, 20, 200

过滤列表中的原始行1

我将“happy”更改为“pappy”并删除过滤器。我现在有;

pappy, 1, 10, 100
happy, 2, 20, 200

因此它更改了第1行第1列,因为在afterSaveCell方法中,返回的rowId1而不是2。所以我的代码是

afterSaveCell: function (rowid, cellname, value, iRow, iCol) {
    alert(rowid + ":" + iRow);
    GRID.GridData[iRow - 1][iCol - 1] = value;
},

总是会失败,因为它正在更改错误行的数据。

对过滤列表进行编辑的方法是什么?

1 个答案:

答案 0 :(得分:0)

即使您在列中定义id并且该列可编辑,jqGrid也不会为您提供编辑行的key: true属性的任何界面。另一方面,如果将修改包含id的列,则可以自行轻松调整id属性。例如

afterSaveCell: function (rowid, cellname, value, iRow, iCol) {
    if (iCol === iMyKeyColumn) { // iMyKeyColumn is the column which should be
                                 // sync with rowid
        // adjust id attribute with new id value
        $(this.rows[iRow]).attr("id", value); // if you use idPrefix you should add
                                              // it to value: this.p.idPrefix + value
    }
}

通常,允许用户修改id值并不好,因为id必须在HTML页面上是唯一的,并且用户通常不会考虑id重复的问题。