Как получить перезагрузку jqGrid для перехода на сервер?

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

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

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

2 ответов


вы не единственный человек, у которого есть проблема. Я отвечаю перед тот же вопрос раньше. Чтобы перезагрузить содержимое сетки с сервера вы должны сбросить 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 (см. статью wiki). Это позволяет написать код что-то вроде

$("#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");

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

<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>