ExtJs Grid分頁(yè)時(shí),默認(rèn)情況下每頁(yè)的序號(hào)都是從1起始的,這往往不符合我們的習(xí)慣。這里實(shí)現(xiàn)了序號(hào)的自動(dòng)增加。
先看效果圖:

實(shí)現(xiàn)步驟如下:
1、定義全局變量。
    var record_start = 0;
2、Grid的columns部分的定義。

 columns : [new Ext.grid.RowNumberer({
  header : 
"序號(hào)",
  width : 
40,
  renderer:
function(value,metadata,record,rowIndex){
   
return record_start + 1 + rowIndex;
  }
 }), {
  header : 
"項(xiàng)目編號(hào)",
  width : 
50,
  sortable : 
false,
  dataIndex : 
"projectNumber"
 }, {
  header : 
"項(xiàng)目名稱",
  sortable : 
false,
  dataIndex : 
"psName"
 }, {
  header : 
"基站名",
  sortable : 
false,
  dataIndex : 
"psSiteName"
 }]

3、Grid 的PagingToolbar部分的定義。

 bbar : new Ext.PagingToolbar({
  store : grid_store,
  pageSize : 
8,
  displayInfo : 
true,
  beforePageText:
"",
  afterPageText:
"/ {0}頁(yè)",
  firstText:
"首頁(yè)",
  prevText:
"上一頁(yè)",
  nextText:
"下一頁(yè)",
  lastText:
"尾頁(yè)",
  refreshText:
"刷新",
  displayMsg : 
"當(dāng)前顯示記錄從 {0} - {1} 總 {2} 條記錄",
  emptyMsg : 
"沒(méi)有相關(guān)記錄!",
  doLoad : 
function(start){
   record_start 
= start;
          
var o = {}, pn = this.paramNames;
          o[pn.start] 
= start;
          o[pn.limit] 
= this.pageSize;
          
this.store.load({params:o});
     }
 })

說(shuō)明:
1、全局變量record_start用于記錄列表開(kāi)始的數(shù)據(jù)點(diǎn),如第一頁(yè),那么為0,如第二頁(yè),那么為8,這里分頁(yè)pagesize設(shè)置為了8
2、分頁(yè)中doLoad這部分的代碼來(lái)自于Ext.PagingToolbar的doLoad方法,PagingToolbar在分頁(yè)發(fā)生變化時(shí)會(huì)調(diào)用這個(gè)方法來(lái)重新load數(shù)據(jù),只是多了個(gè)對(duì)全局變量進(jìn)行賦值的步驟,為的就是在分頁(yè)發(fā)生變化時(shí),記錄傳遞給Url的參數(shù)start的值。
3、在columns中實(shí)例化Ext.grid.RowNumberer時(shí),重寫(xiě)了renderer方法,其實(shí)之所以這樣做的原因,大家看一下Ext.grid.RowNumberer源碼中的renderer方法就知道了,就是根據(jù)行號(hào)+1來(lái)設(shè)置序號(hào)的,這里我們改這個(gè)方法,是為了得到 行號(hào)+分頁(yè)變化時(shí)得到的start參數(shù)的值+1 的值,這樣就能夠正確得到序號(hào)結(jié)合分頁(yè)的數(shù)據(jù)了。
注意:
以上代碼使用的是Ext2.x版本,如果你使用的是Ext3.x需要做以下的修改:
doLoad方法中把this.paramNames改為this.getParams()

  doLoad : function(start){
   record_start 
= start;
          
var o = {}, pn = this.getParams();
          o[pn.start] 
= start;
          o[pn.limit] 
= this.pageSize;
          
this.store.load({params:o});
     }