grid.bindStore()不允许Infinite Scrolling - Ext JS

时间:2014-03-20 15:39:47

标签: extjs

我在我的view文件夹中定义的网格上使用缓冲存储/无限滚动,而不用定义商店。

var grid = Ext.define('MyApp.view.metadata.ResultGrid' ,{
    extend      : 'Ext.grid.Panel',
    alias       : 'widget.resultgrid',
    id          : 'mygrid',
    //columns, etc.

然后我使用

在Ext.application上实例化它
{ xtype: 'resultgrid', width: '85%', hidden: true}

然后,在我的controller我创建了我的store ...

var store = Ext.create('Ext.data.Store', {
    storeId     : 'resultsetstore',
    model       : model,
    buffered    : true,
    pageSize    : itemsPerPage, //50
    autoLoad    : true,
    leadingBufferZone  : 100,
    remoteSort         : true,
    //etc.

...然后将我的商店重新配置到该控制器内的网格:

Ext.getCmp('mygrid').reconfigure(store);
Ext.getCmp('mygrid').show();

使用此方法,记录会加载到我的网格中,但这些记录仅限于pageSize,我失去了无限滚动功能。

如果我在Controller中创建商店后立即创建随机网格,一切正常。但是,我希望将网格定义在其自己的文件夹中,并使用xtype在我的应用程序中的特定位置(在一组面板/组件之间)创建它。

这有效:

var grid = Ext.create('Ext.grid.Panel', {
    title       : 'Test Data',
    loadMask    : true,
    store       : store,

这不是:

var grid = Ext.create('Ext.grid.Panel', {
    title       : 'Test Data',
    loadMask    : true,
    //...
});

grid.reconfigure(store)

我无法在网格定义中使用第一种方法,因为在用户提交搜索表单之前,商店尚未定义。

有没有办法让我的网格在其自己的文件夹中定义,使用我的商店, 保持无限滚动功能,而无需将所有内容放入一个巨人文件?

1 个答案:

答案 0 :(得分:0)

我在我的商店后面实例化我的网格,然后将其添加到我想要的面板中。

var app = Ext.getCmp('my_container');
app.add({
    xtype: 'resultgrid', width: '85%', region: 'center', height: 400, collapsible: false, store: store
});