我必须在选项卡上加载第一个网格面板,然后使用工作正常的 loadData() 函数将数据加载到存储中,但现在我必须将无限网格滚动与其集成。
有什么方法可以在 loadData 到 store 之后动态集成无限滚动..?我正在使用 ExtJS 4.1。请帮帮我。在这里,我在控制器和手柄视图面板中显示了我当前的脚本,我在其中尝试过但无法正常工作。
控制器脚本如下:
var c = this.getApplication().getController('Main'),
data = c.generateReportGridConfiguration(response,true),
tabParams = {
title: 'Generated Report',
closable: true,
iconCls: 'view',
widget: 'generatedReportGrid',
layout: 'fit',
gridConfig: data
},
generatedReportGrid = this.addTab(tabParams);
generatedReportGrid.getStore().loadData(data.data);
在上面的脚本中,一旦我得到 Ajax 调用响应,使用 tabParams 添加网格面板并使用 gridConfig 参数传递数据,这些参数将为网格设置字段和列,然后最后一条语句将网格数据提供给网格。我通过以下参考示例尝试了网格面板设置:http: //dev.sencha.com/deploy/ext-4.0.1/examples/grid/infinite-scroll.html
在上面的页面上,包含的脚本 => http://dev.sencha.com/deploy/ext-4.0.1/examples/grid/infinite-scroll.js
我的网格面板脚本如下:
Ext.define('ReportsBuilder.view.GeneratedReportGrid', {
extend: 'Ext.grid.Panel',
alias: 'widget.generatedReportGrid',
requires: [
'ReportsBuilder.view.GenerateViewToolbar',
'Ext.grid.*',
'Ext.data.*',
'Ext.util.*',
'Ext.grid.PagingScroller',
'Ext.grid.RowNumberer',
],
initComponent: function() {
Ext.define('Report', {extend: 'Ext.data.Model', fields: this.gridConfig.fields, idProperty: 'rowid'});
var myStore = Ext.create('Ext.data.Store', {model: 'Report', groupField: 'name',
// allow the grid to interact with the paging scroller by buffering
buffered: true,
pageSize: 100,
autoSync: true,
extraParams: { total: 50000 },
purgePageCount: 0,
proxy: {
type: 'ajax',
data: {},
extraParams: {
total: 50000
},
reader: {
root: 'data',
totalProperty: 'totalCount'
},
// sends single sort as multi parameter
simpleSortMode: true
}
});
Ext.apply(this, {
dockedItems: [
{xtype: 'generateviewToolbar'}
],
store: myStore,
width:700,
height:500,
scroll: 'vertical',
loadMask: true,
verticalScroller:'paginggridscroller',
invalidateScrollerOnRefresh: false,
viewConfig: {
trackOver: false,
emptyText: [
'<div class="empty-workspace-bg">',
'<div class="empty-workspace-vertical-block-message">There are no results for provided conditions</div>',
'<div class="empty-workspace-vertical-block-message-helper"></div>',
'</div>'
].join('')
},
columns: this.gridConfig.columns,
features: [
{ftype: 'groupingsummary', groupHeaderTpl: '{name} ({rows.length} Record{[values.rows.length > 1 ? "s" : ""]})', enableGroupingMenu: false}
],
renderTo: Ext.getBody()
});
// trigger the data store load
myStore.guaranteeRange(0, 99);
this.callParent(arguments);
}
});
我还处理了来自服务器端查询的启动和限制,但它不会在刚刚触发的滚动上发送 ajax 请求,因为网格中的 pageSize 属性为 100,并且保证范围函数调用参数为 0,99,如果我将增加 0,299,那么它将被触发一次调用三个 ajax (0,100)、(100,200) 和 (200,300),但仅在网格上显示第一个 ajax 调用的数据,而不是在垂直滚动时触发。
因为,我是 ExtJs 的新手,所以请帮帮我...非常感谢..提前。