Я использую два jqgrids на одной странице. вторая сетка я использовал loadonce: true
, так как мне нужна сортировка столбцов во второй сетке. Мне нужно перезагрузить обе сетки после серверной почты. (необходимо показать обновленное значение во второй сетке). первая перезагрузка сетки, поскольку она не будет использовать атрибут loadonce
. мой вопрос в том, можем ли мы использовать атрибут loadonce
и reloadGrid
вместе? (путем установки динамического атрибута loadonce
в сетку), или же мне нужно в этом случае искать сортировку на стороне сервера? пожалуйста посоветуй. Спасибо заранее.
Jqgrid reloadGrid с loadonce установлен в true
Ответ 1
Если вы используете loadonce:true
jqGrid, измените параметры datatype
на "local" после первого загрузки данных из сетки. Вся следующая перезагрузка сетки (сортировка, подкачка, фильтрация) работает локально. Если вы хотите обновить данные сетки с сервера еще раз, вы должны установить datatype
в исходное значение ( "json" или "xml" ). Например:
$("#list").setGridParam({datatype:'json', page:1}).trigger('reloadGrid');
ОБНОВЛЕНО: Бесплатный jqGrid поддерживает fromServer: true
опцию reloadGrid
, начиная с первой версии (начиная с версии 4.8). Таким образом, можно использовать код типа
$("#list").trigger("reloadGrid", { fromServer: true, page: 1 });
сделать то же, что и выше. Главное преимущество: такой код отлично работает с любым начальным значением datatype
("json"
, "jsonp"
, "xml"
и т.д.). Free jqGrid сохраняет исходное значение datatype
внутри внутреннего dataTypeOrg
, прежде чем менять его на "local"
.
Еще одна полезная опция бесплатного jqGrid - это параметр reloadGridOptions
navGrid
, который позволяет указать параметры по умолчанию reloadGrid
. Таким образом, можно использовать, например,
loadonce: true,
navOptions: { reloadGridOptions: { fromServer: true } }
параметры jqGrid, которые дополнительно устанавливают значения по умолчанию для navGrid
. В результате щелчок на кнопке "Перезагрузка" на панели навигации перезагрузит сетку с сервера вместо локальной перезагрузки.
Ответ 2
Ницца пробовал последнюю неделю, решение отлично используйте
jQuery("#datalist").jqGrid().setGridParam(
{
datatype:'xml',
page:1,
url : '<%=request.getContextPath()%>/PreviewReport?cmd=1&fromdate='+vfromDate+'&todate='+vtoDate+'&status='+vstatus+'&keyword='+vkeyword+'&mdn='+vmdn+'&filetype='+vfiletype
}
).trigger("reloadGrid");
для перезагрузки данных с помощью loadonce:false
Ответ 3
Просто для меня, следующей строки недостаточно, чтобы обновить данные в моем loadonce:true
jqGrid:
$("#MikesGrid").jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid');
После вызова этой строки я попытался вызвать свой код, который загрузил мои данные JSON и заполнил его jqGrid
, но он не обновил строки в моей сетке.
Мое решение состояло в том, чтобы принудительно выгрузить jqGrid, а затем вызвать мою функцию для ее воссоздания.
$("#MikesGrid").jqGrid('GridUnload');
Возможно, мне просто не повезло.
Btw, когда я получаю шанс, я буду документировать, как я написал общую функцию JavaScript, чтобы добавить две кнопки в любой jqGrid, один для обновления данных (loadonce) и вторую кнопку для экспорта данных jqGrid в реальный файл Excel, используя мою библиотеку:
Мне нравится код для повторного использования!
Ответ 4
$("#shoppingCatalog").jqGrid('GridUnload');
Удалит структуру, а затем ваш код сможет перестроить сетку данными из следующего обратного вызова сервера.