Есть простой способ сказать, что jqGrid не загружает сами данные. Вы должны использовать datatype: 'local'
в качестве опции jqGrid. Эта опция говорит о том, что вы планируете заполнить данные сетки самостоятельно такими функциями, как addRowData
или addJSONData
(см. Пример для jqGrid tableToGrid "options" option ). Вы также можете заполнить данные в сетке внутри функции обратного вызова loadComplete
, поскольку jqGrid вызывает эту функцию также в случае datatype: 'local'
.
Не забывайте, что данные, которые вы предоставляете в качестве параметра addJSONData
, будут прочитаны (проанализированы) с использованием jsonReader
и jsonmap
. Это дает вам хороший способ не сильно манипулировать данными, полученными с сервера. Вместо этого достаточно дать только правильное отображение данных в jsonmap
для jqGrid. Относительно сложный пример отображения данных вы найдете в Отображение данных JSON в JQGrid .
Если вы думаете об оптимизации передачи данных, посмотрите раздел «Отображение данных» \ «Оптимизация данных» на демонстрационной странице http://trirand.com/blog/jqgrid/jqgrid.html. Идея состоит в том, чтобы заменить структуру данных представленных строк таблицы на массив строк. Тогда никакие имена столбцов (поданные имена структур) не будут отправлены с сервера клиенту, который сжимает данные. С такой оптимизацией вы, вероятно, сможете сэкономить гораздо больше времени, чем другими способами. Не забудьте включить сжатие данных на веб-сервере. Это также может значительно уменьшить размер передаваемых данных.
В конце я могу рекомендовать просмотреть мой вопрос для обсуждения Следует ли заменить использование addJSONData из jqGrid на использование setGridParam () и триггер ('reloadGrid')? , где я сравниваю использование addJSONData () функция с использованием trigger ('reloadGrid') . Конечно, если вы хотите обновить несколько таблиц одновременно, триггер ('reloadGrid') будет немного медленнее, как если бы вы выполняли только один вызов ajax
, но структура вашей программы будет намного проще с триггером ('reloadGrid') . Если вы сравниваете общее время в обоих случаях, может оказаться, что передача данных не является узким местом, которое у вас есть. Таким образом, общее время загрузки страницы в обоих случаях практически не меняется. Лучшим способом было бы испортить время в обоих случаях и решить, сколько вы готовы заплатить за простой дизайн программы.