我有一個加載正常的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'',觸發reloadGrid ,那麼你需要用小代碼'var $ self = $(this),p = $ self.jqGrid(「getGridParam」)包含'loadComplete';如果(p.datatype ===「json」){setTimeout(function(){p.postData.filters = previouslySavedFilter; p.search = true; $ self.trigger(「reloadGrid」);},50);}'在* jqGrid已經將'datatype'改爲'「local」'後,'setTimeout'中的代碼將被執行,並且使用過濾器重新加載爲本地。 – Oleg
我似乎無法獲得此代碼的工作。我不熟悉JavaScript,所以我不知道如何保存postData.Filters?你能給我一個這個過程的例子嗎? – user3420328