【发布时间】:2011-06-30 16:29:17
【问题描述】:
我想在用户离开站点时保存 jqGrid 的状态(排序列、排序顺序、列宽、工具栏搜索字段),并在他返回站点时恢复网格。
我的第一次尝试是使用 getGridParam 方法加载数据,然后使用 JSON 对其进行序列化,并将其作为 JSON-String 保存在 cookie 中。但是 cookie 没有足够的空间来保存 gridParam。
所以我决定使用 localstorage 来保存 Grid 的状态。我的代码如下所示:
$(window).unload(function () {
// Load GridParam
var gridData = $('#Grid').jqGrid('getGridParam')};
// Serialize it to as JSON-String
var gridDataAsString = $.toJSON(gridData);
// Save the serialized Griddata in the localStorage
localStorage.setItem("GridParam", gridDataAsString);
});
这很好用。但在下一步中,我从 localStroage 加载 GridParam 并尝试恢复网格。加载数据也没有问题。在调试模式下,我可以看到所有数据都从 localStorage 正确加载。但是,如果我想使用setGridParam 方法恢复网格,则网格具有所有默认值。我的代码如下所示:
$(document).ready(function () {
$("#Grid").jqGrid({ /* Initialize the grid with default values */ });
var loadedGridDataAsString = localStorage.getItem("GridParam");
// Use the default value if no data exists in localStorage
if (loadedGridDataAsString != null) {
// Deserialize the JSON-String to an object
var loadedGridData = $.evalJSON(loadedGridDataAsString);
$("#Grid").jqGrid('setGridParam', loadedGridData);
$("#Grid").trigger('reloadGrid');
}
}
【问题讨论】:
标签: jqgrid local-storage