Setcellvalue 不适用于 JQWidget 网格中的所有页面

问题描述 投票:0回答:2

我正在使用带有分页功能的 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 限制为第一页?

javascript jquery pagination setvalue jqwidget
2个回答
1
投票

“绑定函数”不是一个函数,它是一个通常在绑定完成后引发的事件,通常您尝试绑定到另一个事件中的一个事件,但通常不会产生任何结果。您循环代码 - 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.


0
投票

我找到了这个解决方法..我不确定这是否真的万无一失,但到目前为止它似乎有效..如果您知道更精确的解决方案,请发布...

        $("#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') { ...... 
© www.soinside.com 2019 - 2024. All rights reserved.