如何在Extjs中正确加载数据视图中的大量项?

gblwokeq  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(133)

我有一个数据视图('Ext.view. View')绑定到viewModel中的存储,并且dataview正确显示项。但是,问题是在显示项之前加载了整个存储,当有大量项时,这可能会很慢。如何加载和显示仅一页数据,然后在将页面滚动到末尾时加载另一部分数据?除了滚动之外,也可以使用页面末尾的按钮(如“显示更多”)。
我试着在我的存储配置中添加leadingBufferZone和pageSize,但是什么都没有发生-整个存储在开始时再次加载,除了这次网络流量显示limit:20而不是limit:25。
这个缓冲存储区是如何工作的?
第一个

watbbzwu

watbbzwu1#

因此,您可以将DataView替换为带有模板列的网格。在那里,您可以使用缓冲存储或分页。

Ext.application({
    name: 'Fiddle',

    launch: function () {
        Ext.define('Image', {
            extend: 'Ext.data.Model',
            fields: [{
                name: 'src',
                type: 'string'
            }, {
                name: 'caption',
                type: 'string'
            }]
        });

        Ext.create('Ext.data.Store', {
            id: 'imagesStore',
            model: 'Image',
            data: [{
                src: 'https://www.w3schools.com/css/img_5terre.jpg',
                caption: 'Drawing & Charts'
            }, {
                src: 'https://www.w3schools.com/css/lights600x400.jpg',
                caption: 'Advanced Data'
            }, {
                src: 'https://www.w3schools.com/w3css/img_snowtops.jpg',
                caption: 'Overhauled Theme'
            }, {
                src: 'https://www.w3schools.com/w3css/img_forest.jpg',
                caption: 'Performance Tuned'
            }]
        });

        Ext.create('Ext.grid.Panel', {
            store: Ext.data.StoreManager.lookup('imagesStore'),
            columns: [{
                text: 'Department (Yrs)',
                xtype: 'templatecolumn',
                tpl: new Ext.XTemplate(
                    '<div class="card" style="padding-left: 32px;">',
                    '<div><button type="button" class="btn"><span class="btnSpan">Button</span></button></div>',
                    '<div class="img"><img src="{src}" class="imgClass"></div>',
                    '</div>',
                ),
                flex: 1
            }],
            height: 600,
            hideHeaders: true,
            rowLines: true,
            trackMouseOver: false,
            viewConfig: {
                stripeRows: false
            },
            rowLines: false,
            disableSelection: true,
            renderTo: Ext.getBody()
        });
    }
});

相关问题