2017-07-24 96 views
0

我有一個jqgrid,第一次加載時使用ajax調用基於數據庫調用加載。一旦它被加載,我將它存儲在一個JSON字符串中,並在需要時重新加載它。而不是有2個完全獨立的jqgrid定義爲同一件事,1爲Ajax調用和1爲JSON數據,有沒有辦法動態地設置下列選項?動態Jqgrid選項

Ajax調用...

url: '@Url.Action("GetData", "Controller")', 
datatype: "json", 
postData: param1: "param1" 

JSON電話:

datatype: "jsonstring", 
datastr: sessionStorage.crmReportData, 

基本上,jqGrid的設置的其餘部分是完全相同的兩個,這是唯一的不同之處。有沒有一種方法可以在第一次加載時使用第一組選項,如果JSON字符串存在,可以使用第二組選項嗎?

+0

如果使用[Guriddo jqGrid](http://www.guriddo.net),則可以使用saveState和loadState方法。當網格加載時,您可以用保存狀態存儲它,稍後可以使用loadState加載保存的狀態。這是[example](http://www.guriddo.net/demo/guriddojs/functionality/saveloadstate/index.html) –

回答

1

我希望我正確理解你的所作所爲。如果你想測試sessionStorage.crmReportData。如果不是空的,則可以使用datatype: "jsonstring"並從sessionStorage.crmReportData加載數據。否則,你要加載url的數據。在這種情況下,你可以使用以下選項:

datatype: sessionStorage.crmReportData ? "jsonstring" : "json", 
datastr: sessionStorage.crmReportData, 
url: '@Url.Action("GetData", "Controller")', 
postData: { param1: "param1" }, 

如果使用datatype: "jsonstring"選項url將被忽略。如果您使用datatype: "jsonstring"postData的參數param1應該沒有副作用。另一方面,在從服務器加載數據的情況下,選項datastr將被忽略。因此上述選項應該起作用。

+0

就是這樣,謝謝! –

+0

@MarkHighfield:不客氣! – Oleg