2017-07-24 84 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