This is how I saved the state of my Grid (as json data in a hidden field, but instead of localstorage, but the idea should be the same).
Saving the grid parameters as JSON in a hidden field:
function saveGridParameters(grid) { var gridInfo = new Object(); gridInfo.url = grid.jqGrid('getGridParam', 'url'); gridInfo.sortname = grid.jqGrid('getGridParam', 'sortname'); gridInfo.sortorder = grid.jqGrid('getGridParam', 'sortorder'); gridInfo.selrow = grid.jqGrid('getGridParam', 'selrow'); gridInfo.page = grid.jqGrid('getGridParam', 'page'); gridInfo.rowNum = grid.jqGrid('getGridParam', 'rowNum'); gridInfo.postData = grid.jqGrid('getGridParam', 'postData'); gridInfo.search = grid.jqGrid('getGridParam', 'search'); $('#gridParams').val(JSON.stringify(gridInfo)); }
Loading Saved Data: (I load saved data into the beforeRequest event of the grid):
beforeRequest: function() //loads the jqgrids state from before save { if(gridParams !=null && gridParams!="") { var gridInfo = $.parseJSON(gridParams); var grid = $('#ReportPartsGrid'); grid.jqGrid('setGridParam', { url: gridInfo.url }); grid.jqGrid('setGridParam', { sortname: gridInfo.sortname }); grid.jqGrid('setGridParam', { sortorder: gridInfo.sortorder }); grid.jqGrid('setGridParam', { selrow: gridInfo.selrow }); grid.jqGrid('setGridParam', { page: gridInfo.page }); grid.jqGrid('setGridParam', { rowNum: gridInfo.rowNum }); grid.jqGrid('setGridParam', { postData: gridInfo.postData }); grid.jqGrid('setGridParam', { search: gridInfo.search }); gridParams = ''; $('#ReportPartsGrid').trigger('reloadGrid'); } },
source share