Как подавить jqgrid от начальной загрузки данных? - PullRequest
4 голосов
/ 30 апреля 2010

У меня есть страница, на которой есть пара jqGrids, а также несколько других полей.Я хочу сделать один вызов AJAX для себя, который возвращает объект JSON, содержащий данные, которые должны использоваться для заполнения всей страницы.

Итак, я хотел бы сделать вызов сам, заполнив "другие поля""а затем извлеките пару коллекций из основного объекта JSON, который был возвращен, и заполните каждый из jqGrids этими коллекциями" вручную ".

У меня так много работы, но я не могу заставить jqGridпрекратите попытки сделать запрос AJAX сам.Не должен ли быть способ сказать jqGrid НЕ пытаться делать AJAX-вызов при его инициализации?

Я нашел похожий вопрос, заданный здесь: Как подавить jqgrid от начальной загрузки данных?

Но у меня нет варианта, который решил это для плаката.

Мне кажется вполне логичным, что некоторые люди могут захотеть использовать этот плагин без попытки таблицы получить егособственные данные при инициализации.Я что-то упускаю в документации (вики-опции)?

Спасибо.

1 Ответ

8 голосов
/ 01 мая 2010

Есть простой способ сказать, что 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') . Если вы сравниваете общее время в обоих случаях, может оказаться, что передача данных не является узким местом, которое у вас есть. Таким образом, общее время загрузки страницы в обоих случаях практически не меняется. Лучшим способом было бы испортить время в обоих случаях и решить, сколько вы готовы заплатить за простой дизайн программы.

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