Подтвердить что ты не робот

Jqgrid reloadGrid с loadonce установлен в true

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

4b9b3361

Ответ 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, используя мою библиотеку:

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

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

Ответ 4

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

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