Extjs3.4从超过1页的网格存储中获取所有数据

Extjs3.4从超过1页的网格存储中获取所有数据,extjs,extjs3,Extjs,Extjs3,如何从超过1页的网格中获取所有数据 我设置一个页面只显示50条记录,但我的总数据是52条记录,存储在两个页面中 我可以知道如何从这两页中获取所有数据吗 下面是只能获取1页数据的代码 ExportButtonTestJS = Ext.extend(One.Report, { reportName: 'ExportButtonTestRpt', autoExecute: true, isDetailPage: false, listeners: {

如何从超过1页的网格中获取所有数据

我设置一个页面只显示50条记录,但我的总数据是52条记录,存储在两个页面中


我可以知道如何从这两页中获取所有数据吗

下面是只能获取1页数据的代码

ExportButtonTestJS = Ext.extend(One.Report, {
    reportName: 'ExportButtonTestRpt',
    autoExecute: true,
    isDetailPage: false,
    listeners: {
        bbarconfig: function(report, bbarConfig) {
          bbarConfig.items.push({
            xtype: 'button',
            text: 'Export',
            disabled: false,
            onClick : function () {
                console.log(report.grid.getStore().data.items);
                }
          });
        }
    }
});

不要试图直接访问项目。使用存储方法进行此操作

尝试
report.grid.getStore().getRange()


请参阅Ext.data.store的默认页面大小为50。因此,即使存储中的数据超过50条记录(例如400条),在任何时候Ext.store中也只会存储50条记录。一旦我们进入下一页,从51到100条记录的下一条记录将存储在存储区中

有两种解决方案可满足您的需求:

  • 根据需要增加页面大小--例如:
    pageSize:500
  • 在Ext.data.store中设置
    缓冲:true

  • 在设置
    buffered:true
    时,您可以使用
    grid.store.getRange(start,end)
    一次获取存储的所有记录。但是在这种情况下,您第一次需要加载一次存储。

    遇到同样的问题,为了从所有页面获取数据,我必须这样做:

    var grid = Ext.getCmp('myGrid');    
    
    //store current pageSize
    var currentPageSize = grid.getBottomToolbar().pageSize;
    
    var store = grid.getStore();     // store from grid 
    
    //reload store with total nº of records     
    store.reload({params:{start:0,limit:store.getTotalCount()}});
    
    //once the grid is reloaded with all records, then do whatever you need.
    store.on('load', function(store, recs, opt){
    
          var selected = store.getRange();  // getRange = get all records
    
          //this iterates over all records
          Ext.each(selected, function(item) {
               process here;
          }, this);
    
          //once you finished processing, reload grid with previous pageSize
          store.reload({params:{start:0,limit:currentPageSize}});
    }, this, {single: true}); //single:true says this event will only trigger once
    

    希望这对任何人都有帮助,我花了一些时间让它工作。

    我尝试了report.grid.getStore().getRange(1,52),但它只能显示50条记录,我做错了什么吗?服务器端是否实现了分页?是退回50件还是全部退回?