假设在navgrid中行号从10更改为30,并且我们像这样处理onPaging:
...
onPaging: function(pgbtn) {
var rowNum = $(this).getGridParam('rowNum');
return 'stop';
}
这是预期的行为,因为我认为rowNum应该是30?
答案 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
接收第二个参数,该参数是包含属性newPage
,currentPage
,lastPage
,currentRowNum
和{{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;
}
这处理用户更改顶部寻呼机上的值,然后在底部寻呼机上再次更改它的情况。上面的代码将继续检测最佳寻呼机值。