[英]jqGrid Refresh From Server Issue
我有一個Struts2 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];
});
但是,當我單擊“刷新”按鈕時,每單擊一次,它只會從服務器重新加載數據。 如果我在特定列上執行客戶端排序,則單擊“刷新”,它將不會在第一次單擊時從服務器重新加載,第二次單擊將在沒有排序的情況下從服務器刷新(此時,排序圖標仍在頂部可見列),那么第三次點擊將不會影響服務器,但會應用排序。
如何每次從服務器重新加載刷新,然后應用任何現有的排序/過濾器字段?
該解決方案取決於您使用的基礎jqGrid。 如果您使用免費的jqGrid 4.9,則可以僅使用navGrid
附加選項: reloadGridOptions: { fromServer: true }
。
如果使用舊版本的jqGrid的,那么你可以使用回調beforeRefresh
重置datatype
,以"json"
直接重裝之前。 我自己不使用Struts2。 所以我不知道在哪里可以在beforeRefresh
指定回調
或者,您可以使用navigatorRefresh="false"
從導航器欄中刪除標准的刷新按鈕,並使用navigatorExtraButtons
,它似乎可以代替navButtonAdd 。 如果我正確理解該選項,則可以指定onclick
免費代碼,該代碼onclick
您的所有需求。 您可以使用icon: "ui-icon-refresh"
使自定義按鈕看起來與標准的“刷新”按鈕完全相同。 在onclick
內部,您可以設置datatype: 'json'
並觸發"reloadGrid"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.