【问题标题】:jqGrid afterSaveCell uses incorrect rowId on filtered gridjqGrid afterSaveCell 在过滤网格上使用不正确的 rowId
【发布时间】:2014-09-11 01:59:02
【问题描述】:

所以我有一个网格,里面有 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;
},

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

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

【问题讨论】:

  • 我几乎可以肯定您没有正确填写网格的输入数据。您应该包括您使用的datatypecolModelloadoncejsonReader 参数。此外,网格的输入数据(两行数据)很重要。我想输入数据不包含任何id(rowid)信息,因此 jqGrid 必须在每次填充网格页面时分配 ids 1,2,3,..(在每个页面上,在过滤的数据页面上)也)。

标签: jquery jqgrid


【解决方案1】:

jqGrid 不提供任何界面来编辑行的id 属性,即使您在列中定义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 重复的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2011-08-21
    • 1970-01-01
    • 2012-04-24
    • 2016-05-18
    相关资源
    最近更新 更多