Как получить перезагрузку 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>