Extjs Grid分页

本地分页

1.配置MemoryProxy的data属性

Ext.define('app.view.test.region.Form', {
    extend: 'Ext.Panel',
    alias: 'widget.testform',
    modal: true,
    layout: 'border',
    initComponent: function() {
       this.items = [];
       function createGrid() {
           var data = [{
               app_id: '1',
               app_name: 'QQ',
               cete_name: '社交'
           }, {
              app_id: '2',
              app_name: '微信',
              cete_name: '社交'
           }, {
              app_id: '3',
              app_name: 'QQ空间',
              cete_name: '社交'
           }];
          var store = Ext.create('Ext.data.Store', {
              fields: ['name', 'email', 'phone'],
              pageSize: 3, //每页记录数量
              autoLoad: true, //自动加载,需要配置MemoryProxy的data属性,手动经测试无法分页,不知道是不是bugproxy: new Ext.data.MemoryProxy({
              data: data,
              reader: {
                  type: 'json'
              },
              enablePaging: true //是否需要分页})
          });
          var pagingToolbar = new Ext.PagingToolbar({
              store: store,
              displayInfo: true
          }); //分页控件
          var grid = {
              xtype: 'grid',
              width: 500,
              height: 250,
              frame: true,
              title: 'Extjs实现本地分页',
              iconCls: 'icon-grid',
              renderTo: document.body,
              columns: [{
                  header: 'app_id',
                  dataIndex: 'app_id',
                  flex: 1
              }, {
                  header: 'app_name',
                  dataIndex: 'app_name',
                  flex: 1
              }, {
                  header: 'cete_name',
                  dataIndex: 'cete_name',
                  flex: 1
              }],
              store: store,
              bbar: pagingToolbar
           };
           return grid;
        }
        this.items = [{
           region: 'center',
           xtype: 'panel',
           name: 'listpanel',
           split: true,
           autoScroll: true,
           layout: 'anchor',
           defaults: {
               anchor: '100%'
           },
           items: [createGrid()],
        }];
        this.callParent();
    }
});

2.监听chang事件,捕获相关状态进行针对逻辑操作

Ext.define('app.view.test.region.Form', {
    extend: 'Ext.Panel',
    alias: 'widget.testform',
    modal: true,
    layout: 'border',
    initComponent: function() {
       this.items = [];
       function createGrid() {
           var itemsPerPage = 2;
           var store = new Ext.data.Store({       
                fields: [                
                   'app_id',               
                   'app_name',               
                   'cete_name',            
                ],    
                data: [{
                   app_id: '1',
                   app_name: 'QQ',
                   cete_name: '社交'
                }, {
                  app_id: '2',
                  app_name: '微信',
                  cete_name: '社交'
                }, {
                  app_id: '3',
                  app_name: 'QQ空间',
                  cete_name: '社交'
                }];
                store.load({            
                  params: {                
                      start: 0,                
                      limit: itemsPerPage            
                  }       
           });
           var grid = {
                xtype: 'grid',            
                // title: 'Extjs grid 分页',            
                name: 'datagrid',            
                hidden: false,            
                region: 'center',            
                width: '100%',            
                autoScroll: true,            
                store: store,
                columns: [{                
                    header: 'APPID',                
                    dataIndex: 'app_id',                
                    align: 'center',                
                    flex: 1            
                }, {                
                    header: 'APP名称',                
                    dataIndex: 'app_name',                
                    align: 'center',                
                    flex: 1            
                }, {                
                    header: '类目',               
                    dataIndex: 'cete_name',                
                    align: 'center',                
                    flex: 1           
                }],
                dockedItems: [{                
                    xtype: 'pagingtoolbar',                
                    store: store, // GridPanel使用相同的数据源               
                    dock: 'bottom',                
                    displayInfo: true,                
                    listeners: { //根据change事件捕获相关状态进行针对逻辑操作      
                        change: function(me, pageData, eOpts) {     
                            var newData = [{                            
                                app_id: '1',                            
                                app_name: 'QQ',                            
                                cete_name: '社交'                       
                            }, {                            
                                app_id: '2',                            
                                app_name: '微信',                            
                                cete_name: '社交'                        
                            }];                        
                            store.loadData(newData);                        
                            console.log(me); //当前对象                        
                            console.log(pageData.total); //记录的数据集作为服务器返回的总数  
                            console.log(pageData.currentPage); //当前页码                        
                            console.log(pageData.pageCount); //数据的总页数                        
                            console.log(pageData.toRecord); //当前页面的起始记录索引  
                            console.log(pageData.fromRecord); //当前页面的结束记录索引                        
                            console.log(eOpts); //当前函数                    
                        }               
                    }            
                }]
         };
         return grid;
      }
      this.items = [{
         region: 'center',
         xtype: 'panel',
         name: 'listpanel',
         split: true,
         autoScroll: true,
         layout: 'anchor',
         defaults: {
             anchor: '100%'
         },
         items: [createGrid()],
      }];
      this.callParent();
  }
});

远程服务器分页

grid远程分页

Ext.define('app.view.test.region.Form', {
    extend: 'Ext.Panel',
    alias: 'widget.testform',
    modal: true,
    layout: 'border',
    initComponent: function() {
       this.items = [];
       function createGrid() {
           var store = new Ext.data.Store({       
                id: 'gridStore',
                autoLoad: false,
                fields: [                
                   'app_id',               
                   'app_name',               
                   'cete_name',            
                ],    
                data: [{
                   app_id: '1',
                   app_name: 'QQ',
                   cete_name: '社交'
                }, {
                   app_id: '2',
                   app_name: '微信',
                   cete_name: '社交'
                }, {
                   app_id: '3',
                   app_name: 'QQ空间',
                   cete_name: '社交'
                }];
                pageSize: 1000, //每页记录数量
                proxy: {
                   type: 'ajax',
                   method: 'get',
                   url: '/ajax/ListRS1Data', // 请求URL加载数据
                   extraParams: {
                       start_day: Ext.Date.format(new Date(new Date() - 86400)), 'Ymd'),
                       end_day: Ext.Date.format(new Date(), 'Ymd'),
                   },
                   reader: {
                       type: 'json',
                       rootProperty: 'data',
                       totalProperty: 'total',
                       successProperty: 'ret'
                   }
                }
           });
           store.load({            
               params: {                
                   start: 0,                
                   limit: itemsPerPage            
               }       
           });
           var grid = {
               xtype: 'grid',            
               // title: 'Extjs grid 分页',            
               name: 'datagrid',            
               hidden: false,            
               region: 'center',            
               width: '100%',            
               autoScroll: true,            
               store: store,
               columns: [{                
                   header: 'APPID',                
                   dataIndex: 'app_id',                
                   align: 'center',                
                   flex: 1            
               }, {                
                   header: 'APP名称',                
                   dataIndex: 'app_name',                
                   align: 'center',                
                   flex: 1            
               }, {                
                   header: '类目',               
                   dataIndex: 'cete_name',                
                   align: 'center',                
                   flex: 1           
               }],
               dockedItems: [{
                   xtype: 'pagingtoolbar',
                   store: store, // GridPanel使用相同的数据源
                   dock: 'bottom',
                   pageSize: 1000, //每页记录数量
                   displayInfo: true
               }],    
           };
           return grid;
        }
        this.items = [{
           region: 'center',
           xtype: 'panel',
           name: 'listpanel',
           split: true,
           autoScroll: true,
           layout: 'anchor',
           defaults: {
               anchor: '100%'
           },
           items: [createGrid()],
        }];
        this.callParent();
    }
});

动态改变参数

clickSearch: function() {    
    var self = this.getView();    
    var panel = self.down('panel[name=listpanel]');  
    var grid = panel.down('grid');    
    var form = panel.down('form');    
    var selectValue = form.getValues();
    var store = grid.getStore();    
    var proxy = store.getProxy();    
    proxy.extraParams = {};    
    if (proxy) {        
        Ext.apply(proxy.extraParams, selectValue);        
        if (store.isLoaded() || store.autoLoad) {            
            store.removeAll();            
            store.loadPage(1);        
        }   
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,999评论 4 368
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,102评论 1 302
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,709评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,439评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,846评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,881评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,062评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,783评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,517评论 1 248
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,762评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,241评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,568评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,236评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,145评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,941评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,965评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,802评论 2 275

推荐阅读更多精彩内容