2017-07-24 2 views
0

Ich habe ein jqgrid, das beim ersten Laden einen Ajax-Aufruf verwendet, um basierend auf einem DB-Aufruf zu laden. Sobald es geladen wurde, speichere ich es in einer JSON-Zeichenfolge und lade es bei Bedarf neu. Anstatt zwei völlig separate jqgrid-Definitionen für dieselbe Sache, 1 für den Ajax-Aufruf und 1 für die JSON-Daten, gibt es eine Möglichkeit, die folgenden Optionen dynamisch einzustellen?Dynamische Jqgrid-Optionen

Ajax-Aufruf ...

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

JSON Aufruf:

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

im Grunde, der Rest des jqGrid Setup das für beide genau das gleiche ist, das sind die einzigen Unterschiede. Gibt es eine Möglichkeit, den ersten Satz von Optionen beim ersten Laden und den zweiten Satz von Optionen zu verwenden, wenn der JSON-String existiert?

+0

Wenn Sie [Guriddo jqGrid] (http://www.guriddo.net) verwenden, können Sie die Methoden saveState und loadState verwenden. Wenn das Grid geladen wird, können Sie es mit dem Status save speichern und später können Sie loadState verwenden, um den gespeicherten Status zu laden. Hier ist [Beispiel] (http://www.guriddo.net/demo/guriddojs/functionality/saveloadstate/index.html) –

Antwort

1

Ich hoffe, dass ich richtig verstehe, was Sie tun. In dem Fall, dass Sie sessionStorage.crmReportData testen möchten. Wenn es nicht leer ist, können Sie datatype: "jsonstring" verwenden und die Daten von sessionStorage.crmReportData laden. Andernfalls laden Sie die Daten von url. Im Fall können Sie die folgenden Optionen verwenden:

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

Die Option url wird, wenn Sie datatype: "jsonstring" verwenden ignoriert. Der Parameter param1 von postData sollte keine Nebenwirkungen haben, wenn Sie datatype: "jsonstring" verwenden. Auf der anderen Seite wird die Option datastr ignoriert, wenn Daten vom Server geladen werden. Daher sollten die obigen Optionen funktionieren.

+0

das war es, danke! –

+0

@MarkHighfield: Gern geschehen! – Oleg