jqGrid rowNum 选项问题
jqGrid rowNum option issue
假设 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?
执行顺序发生了变化(比较 jqGrid 4.4.0 中的 the line in jqGrid 4.7.0 with the line)。 jqGrid 首先在 jqGrid 4.4.0 中更改了 rowNum``and then called
onPaging`,但在 jqFeid 4.7.0 中更改了顺序。
要访问 rowNum
的新值,应该直接从相应的 <select>
控件中获取 rowNum
的值。如果你使用网格底部的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
更改为寻呼机。所以你可以使用像
这样的代码
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
。
在使用 both top 和 bottom 寻呼机的情况下,您必须获取两个值并选择不等于 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
,则存在关闭问题,例如,如果用户在具有新寻呼机号码的输入框中键入新值。
我现在正在开发 free jqGrid 作为 my fork on github. I change the code of jqGrid so that onPaging
receives the second parameter which is object with the properties newPage
, currentPage
, lastPage
, currentRowNum
and newRowNum
. The corresponding jQuery event jqGridPaging
are added too. Moreover I have changed the value of the first parameter so that it corresponds the documentation 值将是字符串 "first"
、"last"
、"prev"
或 "next"
以防用户单击相应的寻呼机按钮。 4.7版本实际使用的是对应寻呼机按钮的id
,而不是"first"
、"last"
、"prev"
、"next"
。所以字符串 "first"
、"last"
、"prev"
、"next"
可以附加 "_"
和寻呼机(或 toppager)的 ID。
因此回调代码中直接使用options.newRowNum
或options.currentRowNum
即可:
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";
}
}
对于顶部和底部寻呼机,我想补充 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;
}
这处理了用户在顶部分页器上更改值,然后在底部分页器上再次更改的情况。上面的代码将继续检测顶部寻呼机值。
假设 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?
执行顺序发生了变化(比较 jqGrid 4.4.0 中的 the line in jqGrid 4.7.0 with the line)。 jqGrid 首先在 jqGrid 4.4.0 中更改了 rowNum``and then called
onPaging`,但在 jqFeid 4.7.0 中更改了顺序。
要访问 rowNum
的新值,应该直接从相应的 <select>
控件中获取 rowNum
的值。如果你使用网格底部的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
更改为寻呼机。所以你可以使用像
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
。
在使用 both top 和 bottom 寻呼机的情况下,您必须获取两个值并选择不等于 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
,则存在关闭问题,例如,如果用户在具有新寻呼机号码的输入框中键入新值。
我现在正在开发 free jqGrid 作为 my fork on github. I change the code of jqGrid so that onPaging
receives the second parameter which is object with the properties newPage
, currentPage
, lastPage
, currentRowNum
and newRowNum
. The corresponding jQuery event jqGridPaging
are added too. Moreover I have changed the value of the first parameter so that it corresponds the documentation 值将是字符串 "first"
、"last"
、"prev"
或 "next"
以防用户单击相应的寻呼机按钮。 4.7版本实际使用的是对应寻呼机按钮的id
,而不是"first"
、"last"
、"prev"
、"next"
。所以字符串 "first"
、"last"
、"prev"
、"next"
可以附加 "_"
和寻呼机(或 toppager)的 ID。
因此回调代码中直接使用options.newRowNum
或options.currentRowNum
即可:
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";
}
}
对于顶部和底部寻呼机,我想补充 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;
}
这处理了用户在顶部分页器上更改值,然后在底部分页器上再次更改的情况。上面的代码将继续检测顶部寻呼机值。