ExtJs Grid BufferedRenderer不显示网格行

时间:2013-07-26 07:18:09

标签: extjs extjs4.2

我想在我的简单网格面板中实现网格 bufferrenderer ,该面板使用ExtJS 4.2.1显示信息列表。如果不使用bufferrenderer插件,它会显示所有数据,但是当我使用这个插件时,我的网格不包含任何数据。

这是我没有使用插件的网格

enter image description here

这是我使用插件的网格

enter image description here

网格面板的代码是:

Ext.define('MyApp.view.MyPanel', {
extend: 'Ext.panel.Panel',
itemId: 'myPanel',
title: '',
requires: ['Ext.grid.plugin.BufferedRenderer'],
initComponent: function() {
    var me = this;
    Ext.applyIf(me, {
        items: [
            {
                xtype: 'gridpanel',
                autoRender: true,
                autoShow: true,
                itemId: 'gridPanel',
                title: 'My Grid Panel',
                store: 'MyJsonStore',
                columns: [
                    {
                        xtype: 'gridcolumn',
                        dataIndex: 'id',
                        text: 'Id'
                    },
                    {
                        xtype: 'gridcolumn',
                        dataIndex: 'firstName',
                        text: 'FirstName'
                    },
                    {
                        xtype: 'gridcolumn',
                        dataIndex: 'middleName',
                        text: 'MiddleName'
                    },
                    {
                        xtype: 'gridcolumn',
                        dataIndex: 'lastName',
                        text: 'LastName'
                    },
                    {
                        xtype: 'gridcolumn',
                        dataIndex: 'age',
                        text: 'Age'
                    },
                    {
                        xtype: 'gridcolumn',
                        dataIndex: 'country',
                        text: 'Country'
                    },
                    {
                        xtype: 'gridcolumn',
                        dataIndex: 'city',
                        text: 'City'
                    },
                    {
                        xtype: 'gridcolumn',
                        dataIndex: 'street',
                        text: 'Street'
                    },
                    {
                        xtype: 'gridcolumn',
                        dataIndex: 'mobile',
                        text: 'Mobile'
                    },
                    {
                        xtype: 'gridcolumn',
                        dataIndex: 'phone',
                        text: 'Phone'
                    },
                    {
                        xtype: 'gridcolumn',
                        dataIndex: 'zip',
                        text: 'Zip'
                    }
                ],
                plugins: 'bufferedrenderer'
                /*plugins:  {
                    ptype: 'bufferedrenderer',
                    trailingBufferZone: 20,  
                    leadingBufferZone: 25  
                }*/
            }
        ]
    });

    me.callParent(arguments);
}

});

商店的代码是:

Ext.define('MyApp.store.MyJsonStore', {
extend: 'Ext.data.Store',

requires: [
    'MyApp.model.GridModel'
],

constructor: function(cfg) {
    var me = this;
    cfg = cfg || {};
    me.callParent([Ext.apply({
        autoLoad: true,
        model: 'MyApp.model.GridModel',
        storeId: 'MyJsonStore',
        buffered: true,
        clearOnPageLoad: false,
        clearRemovedOnLoad: false,
        leadingBufferZone: 25,
        pageSize: 500,
        purgePageCount: 10,
        trailingBufferZone: 20,
        proxy: {
            type: 'ajax',
            url: 'data/users.json',
            reader: {
                type: 'json',
                root: 'users',
                totalProperty: 'total_user'
            }
        }
    }, cfg)]);
}
});

任何人都可以帮我吗?感谢

2 个答案:

答案 0 :(得分:2)

在网格中设置height属性将解决此问题。

身高:300

答案 1 :(得分:1)

确保视口之前的所有面板的布局都设置为“适合”。此外,网格的区域应该是“中心”。

我还没有测试过,但这样的事情应该可行:

var grid = Ext.create('MyApp.view.MyPanel', {
     layout: 'fit',
     region: 'center'
     });
var viewport = Ext.create('Ext.container.Viewport', {
        renderTo: Ext.getBody(),
        items: [
            grid
            ]
        });