【问题标题】:rowNum of jqGrid with datatype json when onPaging event raised引发 onPaging 事件时数据类型为 json 的 jqGrid 的 rowNum
【发布时间】:2015-04-16 20:52:08
【问题描述】:

我正在尝试将 jqGrid 设置保存在服务器上,例如过滤器、排序顺序等。一切正常,除了 rowNum 设置。为了保存这个参数,我使用了事件 onPaging。

onPaging : function(pgButton){
    if (pgButton == 'records'){
        var rec_per_page = grid.jqGrid('getGridParam', 'rowNum');
        //next sending "rec_per_page" param to server
    }
}

假设用户将 rowNum 的值从每页 50 条记录更改为 100 条记录。当数据类型设置为本地时,它可以正常工作,但如果数据类型设置为 json,变量 rec_per_page 将包含 50 而不是 100。 用户更改后如何获得正确的 rowNum 值?

【问题讨论】:

    标签: jquery json jqgrid


    【解决方案1】:

    这似乎有效:

    onPaging : function(pgButton){
        if (pgButton == 'records'){
          setTimeout(function() { alert(grid.jqGrid('getGridParam', 'rowNum')); }, 0);
        }
    }
    

    【讨论】:

    • 感谢您的回复!正如我从阅读 setTimeout(..., 0) 中了解到的那样,这将使用由浏览器确定的最小延迟,而不是 0 毫秒。所以它不会立即执行。但它会一直有效吗?我的意思是,如果它在 jqgrid 的 onPaging ajax 调用之后引发,ajax 响应的时间会影响吗?
    • 嗯,它可以在 jqgrid 的当前(撰写本文时为 4.6.0)版本中工作,因为它在调用 onPaging 处理程序后立即设置内部分页属性(例如 rowNum)。如果在填充网格后更改实现以设置这些属性,则此解决方案将停止工作。这是一个黑客,而不是一个防弹的解决方案;如果 jqgrid 提供两个事件,一个在分页之前,一个在分页之后,肯定会更好。
    • 感谢您的解释!
    【解决方案2】:

    我使用这种方法:

    onPaging : function(pgButton) {
            if (pgButton == 'records') {
                alert($('.ui-pg-selbox').val());
            }
        }
    

    看起来更漂亮的结构:)

    【讨论】:

    • 如果页面上有多个网格,这很可能会给您带来错误的结果?
    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2013-04-20
    • 2011-11-19
    相关资源
    最近更新 更多