Я недавно записал ответ на вопрос "jqGrid сообщение “загрузки” значения по умолчанию дисплея при обновлении таблицы / на пользовательском обновлении". При записи ответа я думал: почему он использует addJSONData () функция для обновляющих данных в сетке вместо того, чтобы изменить URL относительно setGridParam () и обновить jqGrid данные относительно триггера ('reloadGrid')? Вначале я хотел рекомендовать использовать 'reloadGrid', но после размышления об этом я понял, что я не совсем уверен, каков лучший способ. По крайней мере, я не могу объяснить в двух предложениях, почему я предпочитаю второй путь. Таким образом, я решил, что это мог быть интересный предмет обсуждения.
Таким образом быть точным: у Нас есть типичная ситуация. У нас есть веб-страница по крайней мере с одним jqGrid, и некоторые другие средства управления как поля комбинированного списка (выбирает), флажки и т.д., которые дают пользовательские возможности изменить объем на информации, отображенной в jqGrid. Обычно мы определяем некоторый обработчик событий как jQuery("#selector").change(myRefresh).keyup(myKeyRefresh)
и мы должны перезагрузить jqGrid контейнер на основе выбора пользователя.
После чтения и анализа информации от входа дополнительного пользователя мы можем обновить jqGrid контейнер по крайней мере двумя способами:
$.ajax()
руководство и затем в успехе или полном дескрипторе $.ajax
звонить jQuery.parseJSON()
(или eval
) и затем вызовите addJSONData функцию jqGrid. Я нашел много примеров на stackoverflow.com, который использует addJSONData.Я хотел бы, чтобы мы обсудили преимущества и недостатки обоих путей. Я в настоящее время использую второй путь, таким образом, я запущу с преимуществ этого.
Можно сказать: Я называю существующий веб-сервис, преобразовываю полученные данные в jqGrid формат и называю addJSONData. Это - причина, почему я использую addJSONData метод!
Хорошо, я выберу иначе. jqGrid может сделать запрос к веб-сервису непосредственно и заполнить результаты в сетке. Существует много jqGrid опций, которые позволяют Вам настраивать этот процесс.
В первую очередь, можно удалить или переименовать любой стандартный параметр, отправленный на сервер относительно prmNames опции jqGrid, или больше добавлять дополнительные параметры относительно опции постданных (см. http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options). Можно сразу изменить все созданные параметры, прежде чем jqGrid сделает соответствие $.ajax
запрос путем определения serializeGridData () функции (еще одна опция jqGrid). Больше, чем это, можно изменить каждый $.ajax
параметр путем установки ajaxGridOptions опции jqGrid. Я использую ajaxGridOptions: {contentType: "application/json"}
например, как общая установка $.jgrid.defaults
. ajaxGridOptions опция очень мощна. Относительно ajaxGridOptions опции можно переопределить любой параметр $.ajax
запрос, отправляющий jqGrid, как ошибка, завершается и beforeSend события. Я вижу потенциально интересный определить dataFilter событие, чтобы смочь сделать любую модификацию данных строки возвращенной из сервера.
Еще один аргумент в пользу использования триггера ('reloadGrid') путь блокируется jqGrid во время обработки запросов Ajax. Главным образом я использую параметр loadui: 'block'
заблокировать jqGrid во время запроса JSON, отправляющего к серверу. Относительно плагина jQuery blockUI http://malsup.com/jquery/block/ можно заблокировать больше частей веб-страницы как сетка только. Чтобы сделать этот может звонить:
jQuery('#main').block({ message: 'Die Daten werden vom Server geladen...
' });
прежде, чем назвать триггер ('reloadGrid') методом и jQuery ('#main') .unblock () в функциях loadError и loadComplete. loadui опция могла быть установлена 'отключить' в этом случае.
И мой последний комментарий: Главным образом я раньше создавал jqGrid с набором типа данных к 'локальному' вместо 'json', и я назову триггер ('изменение') функцией некоторых средств управления (одно из полей комбинированного списка) как: jQuery("#selector").change(myRefresh).keyup(myKeyRefresh).trigger('change')
. Таким образом я создаю параметр URL jqGrid только в одном месте в дескрипторе изменения, и тип данных изменения к 'json' в вышеупомянутом описал setGridParam ().
Таким образом, я не вижу, почему функция addJSONData () должна когда-либо использоваться.
Может кто-то, кто использует addJSONData (), функция объясняет мне преимущества своего использования?
Для ярмарки, я могу добавить, что addJSONData (), который существует в более старых версиях jqGrid как имеющий большинство функций, которые я описываю здесь. Нужно заменить использование addJSONData jqGrid к использованию setGridParam (), и триггер ('reloadGrid')?