首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jqGrid rowNum期权问题

jqGrid rowNum期权问题
EN

Stack Overflow用户
提问于 2015-02-20 13:20:51
回答 2查看 925关注 0票数 1

假设在navgrid中行号从10更改为30,并且我们按如下方式处理onPaging:

代码语言:javascript
复制
...
onPaging: function(pgbtn) {
    var rowNum = $(this).getGridParam('rowNum');
    return 'stop';
}
  • 在jqGrid 4.4.0中,rowNum为30。
  • 在jqGrid 4.7.0中,rowNum为10。

这是因为我认为rowNum应该是30岁吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-20 17:10:59

执行顺序被更改(比较jqGrid 4.7.0中的这条线和jqGrid 4.4.0中的这条线)。jqGrid首先在jqGrid 4.4.0中更改了rowNum``and then called in `,但在jqFeid 4.7.0中更改了oder。

要访问rowNum的新值,应该直接从相应的<select>控件获取rowNum的值。如果在网格底部使用pager,则相应的代码可能如下:

代码语言:javascript
复制
onPaging: function (pgButton) {
    var p = $(this).jqGrid("getGridParam"),
        newRowNum = parseInt($(p.pager).find(".ui-pg-selbox").val());

    if (...) { // some stop criteria
        return "stop";
    }
}

如果使用toppager: true选项,则jqGrid在网格顶部创建寻呼机,然后将toppager参数的值从true更改为寻呼机的选择器id。这样您就可以使用下面的代码

代码语言:javascript
复制
onPaging: function (pgButton) {
    var p = $(this).jqGrid("getGridParam"),
        newRowNum = parseInt($(p.toppager).find(".ui-pg-selbox").val());

    if (...) { // some stop criteria
        return "stop";
    }
}

在前面的代码示例中,它只使用p.toppager而不是p.pager

在使用顶部和底部寻呼机时,必须同时获得两个值,并选择与rowNum参数的值不相等的值:

代码语言:javascript
复制
onPaging: function (pgButton) {
    var p = $(this).jqGrid("getGridParam"),
        rowNumBottom = parseInt($(p.pager).find(".ui-pg-selbox").val()),
        rowNumTop = parseInt($(p.toppager).find(".ui-pg-selbox").val()),
        newRowNum = p.rowNum === rowNumTop ? rowNumBottom: rowNumTop;

    if (...) { // some stop criteria
        return "stop";
    }
}

顺便说一下,在寻呼机的其他更改之后调用onPaging时存在关闭问题,例如,如果用户在输入框中键入了新的寻呼机号码的新值。

我现在正在github上开发免费的 jqGrid作为我的叉子。我修改了jqGrid的代码,以便onPaging接收第二个参数,即具有属性newPagecurrentPagelastPagecurrentRowNumnewRowNum的对象。还添加了相应的jQuery事件jqGridPaging。此外,我还更改了第一个参数的值,使其对应于文献资料,该值将是字符串"first""last""prev""next",以防用户单击相应的寻呼机按钮。实际上,4.7版使用的是相应寻呼机按钮的id,而不是"first""last""prev""next"。因此,字符串"first""last""prev""next"可以附加"_"和寻呼机的id。

因此,您只需在回调代码中直接使用options.newRowNumoptions.currentRowNum

代码语言:javascript
复制
onPaging: function (pgButton, options) {
    // one can use options.newRowNum directly
    // the value options.currentRowNum is identical to 
    // $(this).jqGrid("getGridParam", "rowNum")

    if (...) { // some stop criteria
        return "stop";
    }
}
票数 1
EN

Stack Overflow用户

发布于 2016-10-25 23:47:00

对于上、下寻呼机,我要补充Oleg的答复:

代码语言:javascript
复制
onPaging: function (pgButton) {
    var p = $(this).jqGrid("getGridParam"),
        rowNumBottom = parseInt($(p.pager).find(".ui-pg-selbox").val()),
        rowNumTop = parseInt($(p.toppager).find(".ui-pg-selbox").val()),
        newRowNum = p.rowNum === rowNumTop ? rowNumBottom: rowNumTop;

    if (...) { // some stop criteria
        return "stop";
    }

    // update the current value so subsequent changes are detected
    p.rowNum = newRowNum;

}

这将处理用户更改顶部寻呼机上的值,然后在底部寻呼机上再次更改该值的情况。上面的代码将继续检测最高寻呼机值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28629974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档