jquery - On which jQgrid event I can apply changes to jQgrid -


i want load jqgrid data(i.e sorted column, sort order, page) cookie jqgrid can take changes cookie when user again reopen page code should take changes cokkie follows:

function loadgridfromcookie(name)      {         var c = $.cookie(name /*+ window.location.pathname*/);         if (c == null)             return;         gridinfo = $.parsejson(c);         var grid = $("#" + name);         grid.jqgrid('setgridparam', { sortname: gridinfo.sortname });         grid.jqgrid('setgridparam', { sortorder: gridinfo.sortorder });         grid.jqgrid('setgridparam', { page: gridinfo.page });         grid.trigger("reloadgrid");     } 

my entire code :

<script type="text/javascript">     function getdata(jqgridparams)      {         var params = new object();         params.pageindex = jqgridparams.page;         params.pagesize = jqgridparams.rows;         params.sortindex = jqgridparams.sidx;         params.sortdirection = jqgridparams.sord;         params._search = jqgridparams._search;         if (jqgridparams.filters === undefined)             params.filters = null;         else             params.filters = jqgridparams.filters;          // ajax call         $.ajax({             url: 'wsajax.asmx/getdataforgrid',             type: "post",             contenttype: "application/json; charset=utf-8",             datatype: "json",             data: json.stringify(params),             success: function (data, textstatus)              {                 if (textstatus == "success")                  {                     var grid = $("#itemgrid")[0];                     grid.addjsondata(data.d);                 }             },             error: function (jqxhr, textstatus, errorthrown)              {                 alert(textstatus, errorthrown);             }         });     }      function savegridtocookie(name, grid)     // save data cookie     {         var gridinfo = new object();         //name += window.location.pathname;         gridinfo.sortname = grid.jqgrid('getgridparam', 'sortname');         gridinfo.sortorder = grid.jqgrid('getgridparam', 'sortorder');         gridinfo.page = grid.jqgrid('getgridparam', 'page');         //$('#hidden').val(json.stringify(gridinfo));         //alert($('#hidden').val());         $.cookie(name, json.stringify(gridinfo), {expires: 3});     }      function loadgridfromcookie(name)  // load data cookie     {         var c = $.cookie(name /*+ window.location.pathname*/);         if (c == null)             return;         var gridinfo = $.parsejson(c);         var grid = $("#" + name);         grid.jqgrid('setgridparam', { sortname: gridinfo.sortname });         grid.jqgrid('setgridparam', { sortorder: gridinfo.sortorder });         grid.jqgrid('setgridparam', { page: gridinfo.page });         grid.trigger("reloadgrid");     }      // jquery code     $(document).ready(function () {         var oitemgrid = $("#itemgrid");         oitemgrid.jqgrid({             datatype:                  function (jqgridparams) {                 getdata(jqgridparams);                 },             colnames: ['type', 'name', 'desc'],             colmodel: [                 { name: 'type', index: 'type', width: 40 },                 { name: 'name', index: 'name', width: 40 },                 { name: 'desc', index: 'desc', width: 40, sortable: false}],             autowidth: true,             height: 'auto',             rownum: 10,             rowlist: [10, 20, 30, 40],             viewrecords: true,             gridview: true,             autoencode: true,             ignorecase: true,             caption: 'remember sorting , filtering functionality',             pager: '#igpager',             loadcomplete: function(data)              {                 var cookieval = $.cookie("itemgrid");                 if (cookieval != null)                  {                     alert("from loadcomplete: " + cookieval);                     loadgridfromcookie("itemgrid");                 }             },             gridcomplete: function () {                 var prvdata = $.cookie("itemgrid");                 alert("stored data cookie : " + prvdata);                 loadgridfromcookie("itemgrid", gridinfo);                 savegridtocookie("itemgrid", $("#itemgrid"));                 var storeval = $.cookie("itemgrid");                 alert("from gridcomplete: " + storeval);             }             //loadonce: true         }).jqgrid('navgrid', '#igpager', { edit: false, add: false, del: false }, {}, {}, {}, {}, {});     }); </script> 

you should able retrieve these options before initial grid declaration , set these options during grid declaration rather trying in during grid event.

based on initial information in question recommend refactoring loadgridfromcookie to:

function loadgridfromcookie(name)  {     var c = $.cookie(name /*+ window.location.pathname*/);     if (c == null)         return null;     return $.parsejson(c); } 

then use result initialize grid in document ready handler:

var oitemgrid = $("#itemgrid"); var gridsettings = loadgridfromcookie("itemgrid"); oitemgrid.jqgrid({     sortname: gridinfo ? gridinfo.sortname : "type",     sortorder: gridinfo ? gridinfo.sortorder : "asc",     page: gridinfo ? gridinfo.page : 1,     ... }); 

if not possible jqgrid supports beforerequest event should job may need remove reloadgrid call result in grid being loaded twice.

in addition if want programatically re-sort grid better use sortgrid method set sort carets correctly on column header , call grid reload if final parameter set true.

e.g.

grid.jqgrid('setgridparam', { sortorder: gridinfo.sortorder, page: gridinfo.page })     .jqgrid('sortgrid', gridinfo.sortname, true); 

Comments

Popular posts from this blog

image - ClassNotFoundException when add a prebuilt apk into system.img in android -

I need to import mysql 5.1 to 5.5? -

Java, Hibernate, MySQL - store UTC date-time -