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 }) } 

enter image description here

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

Popular posts from this blog

c# - Operator '==' incompatible with operand types 'Guid' and 'Guid' using DynamicExpression.ParseLambda<T, bool> -