我正在使用带有分页功能的 JQWidget 网格来显示表格数据,并且我正在用字符串替换一列中的值。这对于初始页面效果很好,但是当我打开表中的下一页时,我不再获得字符串替换,仅获得原始值。
我的主页使用此代码,它按预期工作(表中的“A”和“W”被替换为“newString”和“newString2”):
$("#jqxgrid").bind("bindingcomplete", function(event) {
var numrows = $("#jqxgrid").jqxGrid('getrows');
for (i = 0; i < numrows.length; i++) {
var value = $("#jqxgrid").jqxGrid('getcellvalue', i, 'column');
if (value == 'W') {
$("#jqxgrid").jqxGrid('setcellvalue', i, 'column', 'newString');
} else if (value == 'A') {
$("#jqxgrid").jqxGrid('setcellvalue', i, 'column', 'newString2');
}
});
我对新页面尝试了一些想法,比如将上面的绑定函数根据页数放入一个循环中:
var paginginfo = $("#jqxgrid").jqxGrid('getpaginginformation');
for (i = 0; i < paginginfo.pagescount; i++) { ...
我还尝试将绑定函数放入与页面更改事件相关的另一个函数中:
$("#jqxgrid").bind("pagechanged", function(event) {
$("#jqxgrid").bind("bindingcomplete", function(event) {...
但是这些都不起作用。 也许“numrows”将 setcellvalue 限制为第一页?
“绑定函数”不是一个函数,它是一个通常在绑定完成后引发的事件,通常您尝试绑定到另一个事件中的一个事件,但通常不会产生任何结果。您循环代码 - for (i = 0; i < numrows.length; i++) {... would probably not work in case of virtual paging, because the loop should be from the start index to the end index and the start index wouldn't be 0 on the second page.
我找到了这个解决方法..我不确定这是否真的万无一失,但到目前为止它似乎有效..如果您知道更精确的解决方案,请发布...
$("#jqxgrid").bind("bindingcomplete", function (event) {
var paginginfo = $("#jqxgrid").jqxGrid('getpaginginformation');
var pagenum = paginginfo.pagenum;
var pagesize = paginginfo.pagesize;
var pageRows = (pagenum + 1) * pagesize;
for (var i = 0; i < pageRows; i++) {
var value = $("#jqxgrid").jqxGrid('getcellvalue', i, 'currTrafDir');
if (value == 'W') { ......