Jqgrid извлекает все данные, но ведет себя странно - PullRequest
0 голосов
/ 16 мая 2018

В jqgrid я использую эту часть кода, чтобы получить все данные из моей таблицы jqgrid:

var allRowsInGrid = $('#table_outgoing_calls_report').jqGrid('getGridParam','data');

Когда я console.log allRowsInGrid, он показывает все данные и показывает фактическую длину таблицы данных. Но затем я пытаюсь использовать этот массив (allRowsInGrid), он показывает только те данные, которые я вижу на экране. Кроме того, если я пытаюсь console.log allRowsInGrid.length, он показывает длину данных, которые я вижу. Я использую тип данных json и loadonce: true. Перепробовал все но ничего не работает. Этот кусок кода:

 var allRowsInGrid = $('#table_outgoing_calls_report').jqGrid('getGridParam','data');
        console.log(allRowsInGrid);
        console.log(allRowsInGrid.length);

показывает это: enter image description here

Кто-нибудь знает, как это возможно?

1 Ответ

0 голосов
/ 16 мая 2018

Проблема не в в том, что вы делаете , а в , когда и , где вы используете 'getGridParam', 'data'.Вы можете использовать данные после , когда данные сначала загружаются с сервера.Вы можете использовать его, например, внутри loadComplete или внутри beforeProcessing обратного вызова.Я бы порекомендовал вам дополнительно прочитать старый ответ , в котором описаны различия между loadComplete и gridComplete.В большинстве случаев gridComplete не является хорошим выбором.

Более того, loadComplete будет называться не только после первой загрузки с сервера.Позже он будет вызываться при каждой локальной сортировке, поиске и фильтрации / поиске.Если после загрузки данных с сервера необходимо выполнить какие-то действия один раз, тогда обратный вызов beforeProcessing хорош.Он содержит полные данные , возвращенные с сервера до , данные будут обработаны jqGrid.Например, можно изменить или расширить данные внутри beforeProcessing callback, и jqGrid увидит измененные данные, как если бы они были возвращены с сервера.

Еще один вариант - поместить некоторый код в loadCompleteвнутри if ($(this).jqGrid("getGridParam", "datatype") !== "local") { ... }.Это позволяет выполнить некоторые действия после обработки данных, загруженных с сервера, и отображения первой страницы.

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