Как получить перезагрузку jqGrid для перехода на сервер? - PullRequest
11 голосов
/ 22 сентября 2010

Мы используем кнопку перезагрузки навигатора jqGrid на сетке с loadonce, установленным в true.

Кнопка перезагрузки в настоящее время НЕ возвращается на сервер для получения данных - как мы можем заставить перезагрузку перейти на сервер для получения последних данных?

Я полагаю, что мы можем использовать обратный вызов beforeRefresh, чтобы установить сетку data в json вместо local, но я не совсем уверен, как даже настроить метод beforeRefresh - Я не очень понимаю документы.

Ответы [ 2 ]

22 голосов
/ 22 сентября 2010

Вы не единственный человек, у которого есть проблема.Я ответил на тот же вопрос раньше.Чтобы перезагрузить содержимое сетки с сервера, необходимо сбросить параметр datatype до исходного значения «json» или «xml», а затем обновить сетку.Например,

jQuery("#list").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');

ОБНОВЛЕНО : Для вызова строки внутри обработчика событий beforeRefresh вы можете выполнить следующие действия:

jQuery("#list").jqGrid('navGrid','#pager',
  { edit:false,view:false,add:false,del:false,search:false,
    beforeRefresh: function(){
        alert('In beforeRefresh');
        grid.jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
    }
  });

Я изменилпример из старого вопроса. Здесь Если вы нажмете кнопку обновления, вы в реальном времени увидите, как работает код.

ОБНОВЛЕНО 2 : Бесплатно jqGrid поддерживает некоторые новые параметры,Событие reloadGrid поддерживает параметр fromServer: true, который можно использовать для принудительной перезагрузки данных с сервера, а navGrid поддерживает параметр reloadGridOptions, который можно использовать для указания параметров reloadGrid, используемых при нажатии кнопки «Обновить».Таким образом, приведенный выше код может быть

$("#list").jqGrid("navGrid", {
    edit: false,
    add: false,
    del: false,
    search: false,
    reloadGridOptions: { fromServer: true }
});

. Кстати, можно использовать опцию navOptions jqGrid, чтобы указать опции по умолчанию navGrid (см. Статью в вики).Это позволяет писать код что-то вроде

$("#link").jqGrid({
    // all typical jqGrid parameters
    datatype: "json", // or "xml"
    loadonce: true,
    pager: true, // no empty div for page is required
    navOptions: {
        edit: false,
        add: false,
        del: false,
        search: false,
        reloadGridOptions: { fromServer: true }
    }
}).jqGrid("navGrid");
2 голосов
/ 06 января 2011

Я попробовал следующий конфиг, и он работает.

<script type="text/javascript">
jQuery(function() {
    jq("#YOUR-GRID-ID").jqGrid({
        ...
        loadonce: true,
        ...
    });
    jQuery("#refresh_YOUR-GRID-ID").click(function(){
        jQuery("#YOUR-GRID-ID").setGridParam({datatype: 'json'});
        jQuery("#YOUR-GRID-ID").trigger("reloadGrid");
    });
});
</script>
...