jqGrid rowNum选项问题

时间:2015-02-20 13:20:52

标签: jqgrid

假设在navgrid中行号从10更改为30,并且我们像这样处理onPaging:

...
onPaging: function(pgbtn) {
    var rowNum = $(this).getGridParam('rowNum');
    return 'stop';
}
  • 在jqGrid 4.4.0中,rowNum将为30.
  • 在jqGrid 4.7.0中,rowNum将为10。

这是预期的行为,因为我认为rowNum应该是30?

2 个答案:

答案 0 :(得分:1)

执行顺序在(jqGrid 4.7.0中的the line与jqGrid 4.4.0中的the line进行比较)。 jqGrid首先更改了jqGrid 4.4.0中的rowNum``and then called onPaging`,但是在jqFeid 4.7.0中更改了oder。

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

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。所以你可以使用像

这样的代码
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参数值的值:

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 my fork。我更改了jqGrid的代码,以便onPaging接收第二个参数,该参数是包含属性newPagecurrentPagelastPagecurrentRowNum和{{1}的对象}}。还添加了相应的jQuery事件newRowNum。此外,我更改了第一个参数的值,使其与the documentation对应,值将为字符串jqGridPaging"first""last""prev" in用户单击相应的寻呼机按钮时的情况。版本4.7实际上使用了相应寻呼机按钮的"next"而不是id"first""last""prev"。因此字符串"next""first""last""prev"可以附加"next"和寻呼机(或toppager)的ID。

因此,可以直接在回调代码中使用"_"options.newRowNum

options.currentRowNum

答案 1 :(得分:0)

对于顶部和底部寻呼机,我会加入Oleg的回复:

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;

}

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