Many people on the Internet do not know how to paging extjs grid, including the problem that start is 0. Someone suggested to modify the paging Toolbar Control to achieve paging effect unrelated to the background, this is also a solution, but it is not the most standard. Next I will talk about the most standard solution !!
First look at the following class!
Package COM. TD. common; </P> <p> Import Java. lang. reflect. field; <br/> Import Java. util. date; <br/> Import Java. util. list; </P> <p> Import Org. apache. commons. logging. log; <br/> Import Org. apache. commons. logging. logfactory; </P> <p> Import COM. TD. bean. caigou; </P> <p> Import net. SF. JSON. jsonarray; <br/> Import net. SF. JSON. jsonobject; <br/> Import net. SF. JSON. jsonconfig; <br/> @ suppresswarnings ({"unchecked", "serial" }) <Br/> public class objecttojson {<br/> Private Static final log = logfactory. getlog (caigou. class); </P> <p> Public String objecttojson (Object bean) {<br/> jsonobject Jo = jsonobject. fromobject (bean); <br/> // jsonarray ja = jsonarray. fromobject (bean); <br/> return Jo. tostring (); <br/>}</P> <p> Public String arraytojson (Object bean) {</P> <p> jsonarray ja = jsonarray. fromobject (bean); <br/> return Ja. toS Tring (); <br/>}</P> <p> private string convertjavascripttype (string type) {<br/> // system. out. print (type); <br/> If ("string ". equals (type) <br/> return "string"; <br/> else if ("integer ". equals (type) <br/> return "int"; <br/> else if ("date ". equals (type) <br/> return "date"; // The data converted from this JSON package is returned as follows: {"month ": 3, "day": 2, "year": 109, "Nanos": 0, "Time": 1239694471000, "seconds": 31, "timezoneoffset ": -480, "date": 14, "hours": 15, "Minutes": 34} <br/> else <br/> return "string "; <br/>}</P> <p> Public String listtojson (list, string key, int totalnumber, int start, int limit) {<br/> If (list! = NULL & list. size ()> 0) <br/>{< br/> Object OBJ = List. get (0); <br/> return this. listtojson (OBJ, list, key, totalnumber, start, limit); <br/>}else {<br/> return ""; <br/>}</P> <p>/* <br/> * key is not required for the latest method, but must be added to each class. the following field <br/> * Public String keyfield = "{primary key of the table corresponding to each object }"; <br/> * example: <br/> * Public String keyfield = "tablename"; <br/> **/<br/> Public String listtojson (list, int totalnumber, in T start, int limit) {<br/> If (list! = NULL & list. size ()> 0) <br/>{< br/> Object OBJ = List. get (0); <br/> return this. listtojson (OBJ, list, totalnumber, start, limit); <br/>}else {<br/> return ""; <br/>}</P> <p> // <br/>/* <br/> * @ Param object bean Entity Bean list list list containing data, string key: The primary key of the current object. Start indicates the number of lines on each page starting from the page. <br/> */<br/> Public String listtojson (Object bean, list, string key, int totalnumber, int start, int limit) <br/>{</P> <p> stringbuilder sb = new stringbuilder (); <br/> jsonconfig = new jsonconfig (); </P> <p> jsonconfig. registerjsonvalueprocessor (date. class, <br/> New jsdatejsonvalueprocessor (); <br/> jsonconfig. registerjsonvalueprocessor (Java. SQL. date. class, <br/> New jssqldatejsonvalueprocessor (); </P> <p> jsonarray ja = jsonarray. fromobject (list, jsonconfig); <br/> class clazz = bean. getclass (); <br/> // clazz. getdeclaredfields () <br/> Field [] fields = clazz. getdeclaredfields (); </P> <p> Sb. append ("{"); <br/> Sb. append ("'metadata': {"); <br/> Sb. append ("totalproperty: 'totalproperties',"); <br/> Sb. append ("root: 'root',"); <br/> Sb. append (string. format ("ID: '% 1 $ s',", key); <br/> Sb. append ("fields: ["); </P> <p> for (INT I = 0; I <fields. length; I ++) {<br/> Field field = Fields [I]; <br/> string name = field. getname (); <br/> string type = field. getType (). getsimplename (); <br/> Sb. append ("{"); <br/> Sb. append (string. format ("Name: '% 1 $ s', type:' % 2 $ S'", name, <br/> convertjavascripttype (type ))); <br/> Sb. append ("},"); <br/>}< br/> Sb. replace (sb. length ()-1, sb. length (), ""); <br/> Sb. append ("]"); <br/> Sb. append ("},"); <br/> Sb. append ("START:"); <br/> Sb. append (start); <br/> Sb. append (","); <br/> Sb. append ("Limit:"); <br/> Sb. append (Limit); <br/> Sb. append (","); <br/> Sb. append (string. format ("totalproperty: % 1 $ S,", totalnumber); // total number of records <br/> Sb. append ("root:"); <br/> Sb. append (Ja. tostring (); <br/> Sb. append ("}"); <br/> log. debug (sb. tostring (); <br/> return sb. tostring (); <br/>}</P> <p> Public String listtojson (Object bean, list, int totalnumber, int start, int limit) {</P> <p> stringbuilder sb = new stringbuilder (); <br/> jsonconfig = new jsonconfig (); </P> <p> jsonconfig. registerjsonvalueprocessor (date. class, <br/> New jsdatejsonvalueprocessor (); <br/> jsonconfig. registerjsonvalueprocessor (Java. SQL. date. class, <br/> New jssqldatejsonvalueprocessor (); </P> <p> jsonarray ja = jsonarray. fromobject (list, jsonconfig); <br/> class clazz = bean. getclass (); <br/> // clazz. getdeclaredfields () <br/> Field [] fields = clazz. getdeclaredfields (); </P> <p> Sb. append ("{"); <br/> Sb. append ("'metadata': {"); <br/> Sb. append ("totalproperty: 'totalproperties',"); <br/> Sb. append ("root: 'root',"); <br/> try {<br/> // system. out. println (bean. getclass (). getdeclaredfield ("keyfield "). get (bean ). tostring (); <br/> Sb. append (string. format ("ID: '% 1 $ s',", Bean. getclass (). getdeclaredfield ("keyfield "). get (bean ). tostring (); <br/>} catch (illegalargumentexception e) {<br/> E. printstacktrace (); <br/>} catch (securityexception e) {<br/> E. printstacktrace (); <br/>} catch (illegalaccessexception e) {<br/> E. printstacktrace (); <br/>} catch (nosuchfieldexception e) {<br/> E. printstacktrace (); <br/>}< br/> Sb. append ("fields: ["); </P> <p> for (INT I = 0; I <fields. length; I ++) {<br/> Field field = Fields [I]; <br/> string name = field. getname (); <br/> string type = field. getType (). getsimplename (); <br/> Sb. append ("{"); <br/> Sb. append (string. format ("Name: '% 1 $ s', type:' % 2 $ S'", name, <br/> convertjavascripttype (type ))); <br/> Sb. append ("},"); <br/>}< br/> Sb. replace (sb. length ()-1, sb. length (), ""); <br/> Sb. append ("]"); <br/> Sb. append ("},"); <br/> Sb. append ("START:"); <br/> Sb. append (start); <br/> Sb. append (","); <br/> Sb. append ("Limit:"); <br/> Sb. append (Limit); <br/> Sb. append (","); <br/> Sb. append (string. format ("totalproperty: % 1 $ S,", totalnumber); // total number of records <br/> Sb. append ("root:"); <br/> Sb. append (Ja. tostring (); <br/> Sb. append ("}"); <br/> log. debug (sb. tostring (); <br/> return sb. tostring (); <br/>}</P> <p> Public String listtotreejson (list) {<br/> jsonarray ja = jsonarray. fromobject (list); <br/> // system. out. println (Ja. tostring (); <br/> log. debug (Ja. tostring (); <br/> return Ja. tostring (); <br/>}</P> <p> // Public String jsontobeanarray (string jsonstring, object OBJ) {<br/> // jsonarray = jsonarray. fromobject (jsonstring); <br/> // jsonconfig = new jsonconfig (); <br/> // jsonconfig. setarraymode (jsonconfig. mode_object_array); <br/> // jsonconfig. setrootclass (obj. getclass (); <br/> // obj. getclass () [] users = jsonserializer. tojava (jsonarray, jsonconfig ); <br/> // <br/>//} <br/> // Public String jsontobean (string jsonstring, object OBJ) {<br/> // jsonobject jsonperson = jsonobject. fromobject (jsonstring); <br/> // string [] dateformats = new string [] {"yyyy/mm/DD"}; <br/> // jsonutils. getmorpherregistry (). registermorpher (New datemorpher (dateformats); <br/> // person = (person) jsonobject. tobean (jsonperson, person. class ); <br/> // <br/>/}< br/> // </P> <p >}< br/>
We can see that:
SB. append ("START :");
SB. append (start );
SB. append (",");
SB. append ("Limit :");
SB. append (Limit );
These lines of code. Now, do you know why your grid cannot be paged?
The front-end paging toolbar is based on the data transferred in the background!