Ответ 1
Вы не единственный человек, у которого есть проблема. Ранее я отвечал на тот же вопрос. Чтобы перезагрузить содержимое сетки с сервера, вы должны reset параметр 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");