I have a client side managed jqgrid that I reload when some external event are fired. Everything is fine when I reload the grid with more data but when I reload it with less
Try to replace
$("#list2")[0].refreshIndex();
$("#list2").trigger("reloadGrid");
with
var g = $("#list2");
g.setGridParam({ data: gridData });
g[0].refreshIndex();
g.trigger("reloadGrid");
see http://www.trirand.com/blog/?page_id=393/help/losing-edited-cell-data-after-paging/ and http://www.trirand.com/blog/?page_id=393/bugs/data-parameter-are-not-modified-during-inline-editing/ for details.
In general you should use probably better set url
parameter with respect of setGridParam
methods or just use postData
with a function (see How to filter the jqGrid data NOT using the built in search/filter box for details)
Same thing happened to me. My problem was in the PHP file that returns the data. You should verify that the conditions of the query that counts the records are equal to the conditions used to obtain the records. Probably the SQL statement to count records has no conditions. (Excuse my mistakes, I do not speak English)
I Solved this issue using this code but in my case issue was a bit different that newly added rows were not shown in JQGrid. So this code gets the updated data for Grid and then save it in local object and then reassign this local object to grid and reload grid to page 1.
var grid_data = $("#Grid_ID").jqGrid('getGridParam', 'data');
$("#Grid_ID").jqGrid('clearGridData').jqGrid('setGridParam', {
datatype: 'local',
data: grid_data,
rowNum: grid_data.length
}).trigger('reloadGrid', [{ page: 1}]);