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
Post a Comment