jquery ui - loadonce:true causing issues in paging for jqGrid -
i have jqgrid mentioned below:
userslist.aspx
<div id="users" class="grid-right"> <h3>users</h3> <table id="client-group-users-list"></table> <div id="client-group-users-list-pager"></div> </div> userlistgroup.js
function createusersgrid(getusersforclientgroupurl) { $('#client-group-users-list').jqgrid({ height: "auto", width: "590", url: getusersforclientgroupurl + "?random=" + math.random(), rownum: 10, mtype: 'post', viewrecords: true, postdata: { clientgroup: getclientgroupid(), active: true }, datatype: 'json', colnames: ['clientgroupid', 'login', 'role'], //pgbuttons: false, //pgtext: null, //viewrecords: false, gridview: true, colmodel: [ { name: 'clientgroupid', index: 'clientgroupid', hidden: true }, { name: 'login', index: 'login', search: false, width: 130, sorttype: "string" }, { name: 'role', index: 'role', search: false, width: 100 } ], caption: "users client group: " + getclientgroupname(), pager: '#client-group-users-list-pager', ondblclickrow: function (userid) { edituser(userid); }, sortname: 'login', sortorder: 'asc', loadui: 'enable', loaderror: function (xhr, status) { location.reload(); } }) .jqgrid('navgrid', '#client-group-users-list-pager', { add: false, del: false, edit: false, search: false, view: false }) } 
sorting on login column not working. if put loadonce:true starts working total number of records not reflected , paging functionality gets stops working.
can 1 me out in handling both sorting , paging working datatype: 'json'.
thanks & regards, santosh kumar patro
it seems have typical understanding problems how jqgrid interact server.
if use datatype: 'json' without loadonce: true option the server responsible sorting, paging , optionally searching/filtering of data. in case every request server contains important input parameters default values are: page, rows, sidx , sord. there other parameters _search, nd , other, there not important in case. @ first loading on grid content jqgrid post url getusersforclientgroupurl somthing like
page=1&rows=10&sidx=login&sord=asc the values of rows, sidx , sord parameters corresponds values of rownum, sortname , sortorder options use. sever should provide requested page of data (the 1-st page of data, size of page 10 rows). 1 can use prmnames option of grid rename page, rows, sidx , sord parameters.
it's important understand when user click on "next page"/previous page" buttons or if user click on column header change sorting jqgrid makes new request server , server should provide page of data based on input parameters.
on other side if use loadonce: true option server should return all data (all pages). loaded data should sorted corresponds sidx , sord options. after loading of data jqgrid change datatype "json" "local". next sorting, paging , filtering (see filtertoolbar method) or sorting (see here , here) implemented jqgrid internally (on client side).
if need reload data server should reset value of datatype "json" (see the answer). typically 1 inside of beforerefresh callback of navgrid. grid reloaded server if user clicks on "refresh" button of navigator bar.
i supposed not changed server code , server still returns one page of data when use loadonce: true option. it's wrong. don't forget sort initial data on server.
some common problems in code posted. recommend remove "?random=" + math.random() part url because has no sense. such method used typically prevent caching of server respond in case of usage mtype: "get" (http verb). use mtype: 'post'. response not changed @ all. if use mtype: "get" jqgrid append url nd parameter have same role random parameter. best way set cache-control http headers of server response private, max-age=0 , remove nd prmnames: { nd: null } jqgrid option. see the answer , another one more information caching.
another problem: should understand can call createusersgrid function only once. after <table> id="client-group-users-list" modified. next call of createusersgrid function nothing. 1 should consider whether 1 need place javascript fragment in function if called once. alternatively 1 can use gridunload method destroy existing jqgrid structures before usage @ next time.
if want clientgroup: getclientgroupid() parameter sent server
Comments
Post a Comment