Сохранить состояние jqGrid в localStorage после выхода с сайта

Я хочу сохранить состояние 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');
    }
}
6
задан skipper 30 June 2011 в 07:06
поделиться