setcellvalue не работает на всех страницах в сетке JQWidget

Я использую сетку 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 первой страницей? Спасибо //


person JasonBK    schedule 10.04.2014    source источник


Ответы (2)


«Функция привязки» - это не функция, это событие, которое обычно возникает после завершения привязки, обычно вы пытались привязаться к событию внутри другого события, и это обычно ничего не дает. Код вашего цикла - for (i = 0; i ‹ numrows.length; i++) {..., вероятно, не будет работать в случае виртуального пейджинга, потому что цикл должен быть от начального индекса к конечному индексу, а начальный индекс будет не будет 0 на второй странице.

person scripto    schedule 11.04.2014
comment
хорошо, спасибо .. но я не думаю, что это ответ. Есть ли у вас какие-либо предложения, как я могу сделать эту работу? - person JasonBK; 11.04.2014
comment
Я дал +1 за ваш комментарий, но я не проверял его как ответ, потому что я не чувствую, что это был полный ответ ... но ваш комментарий был полезен. - person JasonBK; 11.04.2014

Я нашел этот обходной путь. Я не уверен, что это действительно надежно, но, похоже, пока работает. Если вы знаете более точное решение, напишите...

        $("#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') { ...... 
person JasonBK    schedule 11.04.2014