美文网首页Extjs
Extjs Grid分页

Extjs Grid分页

作者: Nexthy | 来源:发表于2016-05-19 20:46 被阅读361次

    本地分页

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

    相关文章

      网友评论

        本文标题:Extjs Grid分页

        本文链接:https://www.haomeiwen.com/subject/fcmgrttx.html