У меня есть страница Struts2 jqGrid, которая загружается штрафом. Когда нажата кнопка обновления навигатора, я хочу, чтобы она перезагрузила сетку с сервера.jqGrid Обновить с сервера Выпуск
<sjg:grid
altRows="false"
id="gridtable"
dataType="json"
editurl="%{editurl}"
filter="true"
filterOptions="{stringResult:true}"
gridModel="gridModel"
gridview="true"
height="600"
href="%{remoteurl}"
loadonce="true"
navigator="true"
navigatorAdd="%{editPermission}"
navigatorAddOptions="{
closeAfterAdd:false,
closeOnEscape:true,
reloadAfterSubmit:true,
addCaption:'Add Record'}"
navigatorDelete="false"
navigatorEdit="%{editPermission}"
navigatorEditOptions="{
closeAfterEdit:false,
closeOnEscape:true,
afterSubmit:function(response, postdata) {
return isError(response.responseText);
}
}"
navigatorRefresh="true"
navigatorSearch="false"
onCompleteTopics="loadComplete"
onSelectRowTopics="rowselect"
onEditInlineBeforeTopics="beforeFormLoad"
pager="true"
pagerButtons="true"
rowList="25,50,100"
rowNum="25"
rownumbers="true"
>
У меня есть следующая привязка, чтобы задать тип данных json при нажатии кнопки обновления.
$("#refresh_gridtable").bind("click", function(){
$("#gridtable").jqGrid("setGridParam", {datatype: 'json'});
return [true];
});
Однако, когда я нажимаю на кнопку обновления он перезагружает только данные с сервера на любой другой мыши. Если я выполняю сортировку на стороне клиента в определенном столбце, тогда нажмите «Обновить», он не будет перезагружать с сервера первый клик, второй щелчок будет обновляться с сервера без сортировки (значки сортировки все еще видны в этой точке вверху столбца), то третий клик не ударит по серверу, но применит сортировку.
Как получить обновление для перезагрузки с сервера каждый раз, а затем применить любые существующие поля сортировки/фильтра?
Плагин Struts2 использует jqGrid 4.6.0, поэтому я не могу использовать эту новую опцию. Но ваше предложение для старой версии отлично работало. Еще раз спасибо. Есть ли способ применить существующий локальный фильтр/сортировку после вызова метода .trigger ("reloadGrid")? – user3420328
@ user3420328: Я не уверен, как вы можете это сделать в Struts2, но вам нужно в общем случае сохранить 'postData.filters' ** перед ** перезагрузкой, установить' datatype: 'json'', trigger reloadGrid , тогда вам нужно включить 'loadComplete' с небольшим кодом' var $ self = $ (this), p = $ self.jqGrid ("getGridParam"); if (p.datatype === "json") {setTimeout (function() {p.postData.filters = ранееSavedFilter; p.search = true; $ self.trigger ("reloadGrid");}, 50);} ' Код из 'setTimeout' будет выполнен * после того, как * jqGrid уже изменил' datatype' на '' local '', а перезагрузка с фильтром будет локальной. – Oleg
Кажется, я не могу заставить этот код работать. Я не знаком с javascript, поэтому не знаю, как сохранить postData.Filters? Можете ли вы привести мне пример этого процесса? – user3420328