Я хочу сохранить состояние 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);
});
Это нормально работает. Но на следующем шаге я загружаю GridParam из localStroage и пытаюсь восстановить сетку. Загрузка данных также не проблема. В режиме отладки я вижу, что все данные правильно загружены из 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');
}
}