Chcę zapisać stan jqGrid (sortingcolumn, sortingorder, width of columns, pola wyszukiwania pasków narzędziowych), kiedy użytkownik opuści witrynę i przywróci siatkę po powrocie do Strona.Zapisz stan jqGrid w localStorage po opuszczeniu strony.
Moja pierwsza próba polegała na załadowaniu danych za pomocą metody getGridParam
, a następnie serializacji za pomocą JSON i zapisaniu jej jako JSON-String w pliku cookie. Ale plik cookie nie ma wystarczająco dużo miejsca, aby zapisać siatkę. Postanowiłem więc użyć localstorage, aby zapisać stan siatki. Mój kod wygląda następująco:
$(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);
});
To działa dobrze. Ale w następnym kroku ładuję GridParam z localStroage i próbuję przywrócić siatkę. Łamanie danych również nie stanowi problemu. W trybie debugowania widzę, że wszystkie dane są poprawnie ładowane z localStorage. Ale jeśli chcę przywrócić Grid metodą setGridParam
, siatka ma wszystkie domyślne wartości. Mój kod wygląda następująco:
$(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');
}
}
mogłeś pls powiedzieć, gdzie nazwać metodę saveGridParameters()? –
zależy od tego, kiedy zachodzi potrzeba zapisania danych - w powyższym przykładzie byłaby wywoływana w '$ (window) .unload (function() {});' – woggles