2011-03-22 111 views
18

我在一個頁面中使用了兩個jqgrid。我使用第二個網格loadonce: true,因爲我需要在第二個網格中進行列排序。我需要在服務器回發後重新加載兩個網格。 (需要在第二個網格中顯示更新的值)。第一個網格重新加載罰款,因爲它不會使用loadonce屬性。我的問題是我們可以使用loadonce屬性和reloadGrid在一起嗎? (通過動態設置loadonce屬性到網格)或者我需要去服務器端排序在這種情況下?請指教。提前致謝。jqgrid reloadGrid並將loadonce設置爲true

回答

68

如果使用loadonce:true jqGrid將在網格中首次加載數據後將datatype參數更改爲'local'。所有下一個網格重新加載(排序,分頁,過濾)在本地工作。如果您想再次從服務器刷新網格數據,您應該將datatype設置爲其原始值('json'或'xml')。例如:

$("#list").setGridParam({datatype:'json', page:1}).trigger('reloadGrid'); 

更新:Free jqGrid支持reloadGridfromServer: true選項啓動與第一釋放(從4.8版)。所以人們可以使用代碼,如

$("#list").trigger("reloadGrid", { fromServer: true, page: 1 }); 

做與上述相同。主要優點:這種代碼可以在任何初始值datatype"json","jsonp","xml"等)下正常工作。免費jqGrid將datatype的原始值保存在內部dataTypeOrg之內,然後將其更改爲"local"

免費jqGrid的另一個有用的選項是參數reloadGridOptionsnavGrid,它允許指定默認選項reloadGrid。因此,可以使用例如的jqGrid的

loadonce: true, 
navOptions: { reloadGridOptions: { fromServer: true } } 

選項,其中設置的默認值navGrid另外。結果點擊導航欄的「重新加載」按鈕將從服務器重新加載網格,而不是本地重新加載。

+0

非常感謝oleg。這太棒了。它的工作原理和那是什麼我需要。 – Sam 2011-03-23 18:58:14

+0

@Sam:不客氣! – Oleg 2011-03-23 19:29:05

+0

@ Oleg和Sam,你們中的任何一個人對[這個問題]有什麼想法(http://stackoverflow.com/q/7093874/320399)?我試圖每隔10秒從服務器刷新我的數據,並確保我有最新的數據 – blong 2011-08-18 14:35:16

0

尼斯試圖爲最後一週的解決方案是完美的 使用

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

+0

感謝下次會遵循格式 – 2013-02-26 15:24:25

0

只是說,對我來說,下面一行是不夠的,刷新數據,我loadonce:true的jqGrid:

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

調用後該行,我試圖打電話給我的代碼,它加載了我的JSON數據,並用它填充了jqGrid,但它沒有刷新我網格中的行。

我的解決辦法是強行卸載的jqGrid和然後打電話給我的函數來創建它。

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

也許我只是不吉利。

順便說一句,當我有機會的時候,我會記錄我是如何編寫一個通用JavaScript函數來爲任何jqGrid添加兩個按鈕,刷新(loadonce)數據和第二個按鈕以將jqGrid數據導入一個真正的Excel文件,用我的圖書館:

Export jqGrid to an Excel file

我喜歡可重複使用的代碼!

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

將刪除該結構,然後您的代碼可以使用來自下一個服務器回調的數據重建網格。

相關問題