How to get jqGrid reload to go to server?

jqgrid, jquery, navigator

Solution

You are not the only person which has the problem. I answerd to the same question before. To reload the grid content from the server you should reset the `datatype` parameter to original value "json" or "xml" and then refresh the grid. For example

jQuery("#list").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');

UPDATED: To call the line inside of beforeRefresh event handler you can do following

jQuery("#list").jqGrid('navGrid','#pager',
  { edit:false,view:false,add:false,del:false,search:false,
    beforeRefresh: function(){
        alert('In beforeRefresh');
        grid.jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
    }
  });

I modified an example from am old question. Here if you click on the refresh button you can see live how the code work.

UPDATED 2: Free jqGrid supports some new options. `reloadGrid` event supports `fromServer: true` parameter which can be used to force reloading of data from the server and `navGrid` supports `reloadGridOptions` option which can be used to specify the options of `reloadGrid` used on click on Refresh button. So the above code could be

$("#list").jqGrid("navGrid", {
    edit: false,
    add: false,
    del: false,
    search: false,
    reloadGridOptions: { fromServer: true }
});

By the way one can use `navOptions` option of jqGrid to specify default options of `navGrid` (see the wiki article). It allows to write the code something like

$("#link").jqGrid({
    // all typical jqGrid parameters
    datatype: "json", // or "xml"
    loadonce: true,
    pager: true, // no empty div for page is required
    navOptions: {
        edit: false,
        add: false,
        del: false,
        search: false,
        reloadGridOptions: { fromServer: true }
    }
}).jqGrid("navGrid");

Problem

We use the jqGrid navigator reload button on a grid with `loadonce` set to true. The reload button currently does NOT go back to the server to get the data - how can we get the reload to go to the server to get the latest data? I believe we can use the `beforeRefresh` callback to set the grid `data` to `json` instead of `local` but I'm not clear how to even configure the `beforeRefresh` method - I don't really understand the docs.

Original source

Related problems