Extjs网格不能让商店缓冲工作

时间:2014-02-04 03:01:43

标签: extjs

我有一个大型数据集(超过80k的记录)。所以我试图实现缓冲,但我无法让它工作。如果我包含缓冲配置,我收到错误对象不支持此属性。当我删除它时,工作正常但当然需要永远加载数据。

这是我的代码

Ext.Loader.setConfig({
    enabled: true,
    disableCaching: false
});

Ext.require(['Ext.data.*', 'Ext.grid.*',
    'Ext.grid.plugin.BufferedRenderer', 'Ext.ux.grid.FiltersFeature']);

Ext.define('Borrower', {
    extend: 'Ext.data.Model',
    fields: [{
        name: 'Name',
        type: 'string'
    }, {
        name: 'Num',
        type:
            'string'
    }]
});

Ext.onReady(function () {

    var store = Ext.create('Ext.data.Store', {
        autoLoad: false,
        model: 'Borrower',
        pageSize: 100,
        buffered: true, // getting error object doestn support this property in extjs-all-debug.js
        proxy: {
            type: 'rest',
            url: 'borrBuff.xsp/byName',
            reader: {
                type: 'json',
                root: 'items'
            }
        }

    });

    var filters = {
        ftype: 'filters',
        encode: false,
        local: true
    };

    var grid = Ext.create('Ext.grid.Panel', {
        id: 'testgrid',
        store: store,
        features: [filters],
        plugins: 'bufferedrenderer',
        columns: [{
            text: 'Borr Name',
            dataIndex: 'Name',
            filterable: true
        }, {
            text: 'Number',
            dataIndex: 'Num'
        }]
    });

})

在按钮上单击窗口中打开网格

var grid = Ext.getCmp('testgrid');
var win = Ext.create('Ext.Window', {
    title: 'Grid Filters Example',
    height: 400,
    width: 700,
    modal: true,
    layout: 'fit',
    items: grid
}).show();
grid.getStore().load();

无法弄清楚我做错了什么。感谢您解决此问题的任何帮助。

1 个答案:

答案 0 :(得分:0)

有没有理由从服务器获取所有数据?

我建议将data paging与所有专业人员一起使用,速度是第一个(也有一些缺点)。如果您选择使用无限网格,它将运行良好。事实上,无限网格背后的基本思想是fetching data in chunks(换句话说就是数据分页)。

过滤在此方案中没有任何问题,请参阅sample。它通常由服务器处理,服务器是为完成这类任务而构建的。