JQGrid перезагрузить сетку частично работает - PullRequest
1 голос
/ 28 июля 2010

У меня есть управляемая на стороне клиента jqgrid, которую я перезагружаю при запуске какого-либо внешнего события. Все нормально, когда я перезагружаю сетку с большим количеством данных, но когда я перезагружаю ее с меньшим количеством данных, количество строк неверно.

Например, когда в сетке в настоящее время 100 строк, и я перезагружаю их на 200, тогда панель навигации показывает 200 записей. Если в нем 200 строк, а я обновляю его 25 строками, он все равно показывает 200 на панели навигации вместо 25. Код, который обновляет сетку, выглядит следующим образом:

 $("#list2").trigger("GridUnload");             
 $.ajax({
   url: 'http://xxx,
   dataType: 'json',
   async: false,
   success: function(data) {
              gridData = data;
          }

});

    $("#list2").setGridParam({ data: gridData });
    $("#list2").trigger("reloadGrid");

Не думаю, что проблема в навигационной панели, так как я могу четко перейти на следующую страницу и увидеть дополнительные строки.

Спасибо

Ответы [ 3 ]

4 голосов
/ 28 июля 2010

Попробуйте заменить

$("#list2")[0].refreshIndex();
$("#list2").trigger("reloadGrid");

на

var g = $("#list2");
g.setGridParam({ data: gridData });
g[0].refreshIndex();
g.trigger("reloadGrid");

Подробнее см. http://www.trirand.com/blog/?page_id=393/help/losing-edited-cell-data-after-paging/ и http://www.trirand.com/blog/?page_id=393/bugs/data-parameter-are-not-modified-during-inline-editing/.

В общемВы должны использовать, вероятно, лучший параметр url для методов setGridParam или просто использовать postData с функцией (см. Как фильтровать данные jqGrid, НЕ используя встроенное поле поиска / фильтра дляподробности)

3 голосов
/ 26 февраля 2014

Я решил эту проблему с помощью этого кода, но в моем случае проблема несколько отличалась тем, что вновь добавленные строки не отображались в JQGrid.Таким образом, этот код получает обновленные данные для Grid, а затем сохраняет их в локальном объекте, а затем переназначает этот локальный объект в grid и повторно загружает grid в страницу 1.

var grid_data = $("#Grid_ID").jqGrid('getGridParam', 'data'); 
    $("#Grid_ID").jqGrid('clearGridData').jqGrid('setGridParam', { 
        datatype: 'local',
        data: grid_data,
        rowNum: grid_data.length 
    }).trigger('reloadGrid', [{ page: 1}]);
0 голосов
/ 02 марта 2017

То же самое случилось со мной. Моя проблема была в файле PHP, который возвращает данные. Вы должны убедиться, что условия запроса, который считает записи, равны условиям, используемым для получения записей. Вероятно, оператор SQL для подсчета записей не имеет условий. (Извините за ошибки, я не говорю по-английски)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...