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