jqgrid reloadGrid с loadonce, установленным в true - PullRequest
18 голосов
/ 22 марта 2011

Я использую две jqgrids на одной странице. вторую сетку я использовал loadonce: true, так как мне нужна сортировка столбцов во второй сетке. Мне нужно перезагрузить обе сетки после отправки сообщения обратно. (необходимо показать обновленное значение во второй сетке). первая перезагрузка сетки нормально, так как она не будет использовать атрибут loadonce. мой вопрос: можем ли мы использовать атрибут loadonce и reloadGrid вместе? (путем установки атрибута loadonce динамически для сетки) или же мне нужно пойти на серверную сортировку в этом случае? пожалуйста посоветуй. Заранее спасибо.

Ответы [ 4 ]

68 голосов
/ 23 марта 2011

Если вы используете loadonce:true jqGrid, измените параметры datatype на «локальные» после первой загрузки данных из сетки. Вся следующая перезагрузка сетки (сортировка, разбиение на страницы, фильтрация) работает локально. Если вы хотите обновить данные сетки с сервера еще раз, вы должны установить 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. В результате, нажатие на кнопку «Перезагрузить» на панели навигации приведет к перезагрузке сетки с сервера вместо локальной перезагрузки.

0 голосов
/ 25 февраля 2017
$("#shoppingCatalog").jqGrid('GridUnload');

Удалит структуру, а затем ваш код сможет перестроить сетку с данными из следующего обратного вызова сервера.

0 голосов
/ 15 января 2015

Просто, для меня, следующей строки было недостаточно, чтобы обновить данные в моем loadonce:true jqGrid:

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

После вызова этой строки я попытался вызвать свой код, которыйзагрузил мои данные JSON и заполнил jqGrid им, но он не обновил строки в моей сетке.

Мое решение было принудительно выгрузить jqGrid и затем вызовите мою функцию, чтобы воссоздать ее.

$("#MikesGrid").jqGrid('GridUnload');

Возможно, мне просто не повезло.

Кстати, когда я получу шанс, я запишу, как я написал общий JavaScriptфункция для добавления двух кнопок в любой jqGrid, одна для обновления данных (loadonce), а вторая кнопка для экспорта данных jqGrid в настоящий файл Excel, используя мою библиотеку:

Экспорт jqGrid вФайл Excel

Мне нравится многократно используемый код!

0 голосов
/ 26 февраля 2013

Ницца пыталась за последнюю неделю, решение идеально подходит

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...