JQGRID - maintain check box selection state - page refresh / redirect / reload

How to maintain the checkbox selection after the page refresh / reload / redirected from some other page in JQGRID.

I am working in aspx pages.

I am able to maintain the checkbox selection state in paging using following code:

    gridComplete: function () {
     var currentPage = $(this).getGridParam('page').toString(); //retrieve any previously stored rows for this page and re-select them
     var retrieveSelectedRows = $(this).data(currentPage);
     if (retrieveSelectedRows) {
        $.each(retrieveSelectedRows, function (index, value) {
        $('#list').setSelection(value, false);
     });
    }
   },
   onPaging: function (a) {
     var pagerId = this.p.pager.substr(1); // ger paper id like "pager" 
     var pageValue = $('input.ui-pg-input', "#pg_" +           $.jgrid.jqID(pagerId)).val();
     var saveSelectedRows = $(this).getGridParam('selarrrow'); //Store any selected rows 
     $(this).data(pageValue.toString(), saveSelectedRows);
  }

But, how to maintain the checkbox selection state in page refresh / redirect / reload in JQGrid ?

Also, I tried the following code on Window.OnLoad, but it is not working

$("#list").trigger("reloadGrid", [{page: 1, current: true}]);

Solution 1:

The implementation of selection over multiple pages of the grid is very tricky in old versions of jqGrid. I posted the answer, the answer (try the demo) with the corresponding implementations.

On the other side the scenario of selection of multiple rows over multiple pages is very common. Thus I implemented new feature in free jqGrid. Now one can just use new multiPageSelection: true option in combination with multiselect: true. It changes the behavior of selection in the following way:

  • one can use selarrrow array to pre-select some rows directly during creating the grid.
  • the array selarrrow can hold the ids of rows from other pages. The array selarrrow will be not cleared on changing the page. jqGrid just select rows if it's rowid is in the array selarrrow.
  • click on "Select All" checkbox in the header of checkbox columns fills selarrrow with all rowids of local data (from all pages)

The demo demonstrates the new feature.