Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态加载无限网格的数据_Javascript_Extjs_Extjs6 Classic - Fatal编程技术网

Javascript 动态加载无限网格的数据

Javascript 动态加载无限网格的数据,javascript,extjs,extjs6-classic,Javascript,Extjs,Extjs6 Classic,我使用Extjs 6.7创建了一个无限网格。其中,记录是从存储代理加载的。如何使用Ajax调用动态地完成这项工作 此外,还必须显示已加载记录的计数和总记录数。 大约是100个中的5个 我尝试了store.count(),但它返回的是总计数,因此如何获取加载的记录 store.getData().getCount()返回计数,但在8-9次迭代后它不会改变,似乎数据在缓冲存储中被覆盖 Ext.application({ name : 'Fiddle', launch : funct

我使用Extjs 6.7创建了一个无限网格。其中,记录是从存储代理加载的。如何使用Ajax调用动态地完成这项工作

此外,还必须显示已加载记录的计数和总记录数。 大约是100个中的5个

我尝试了
store.count()
,但它返回的是总计数,因此如何获取加载的记录

store.getData().getCount()
返回计数,但在8-9次迭代后它不会改变,似乎数据在缓冲存储中被覆盖

Ext.application({
    name : 'Fiddle',

    launch : function() {
        var store = Ext.create('Ext.data.BufferedStore', {

            fields: [
                'firstName', 'lastName',
                {
                    name: 'id',
                    type: 'int'
                }],

            leadingBufferZone: 5,
            pageSize: 1,
            remoteSort: true,
            autoLoad: false,
            proxy: {
                type: 'ajax',
                url: 'https://llbzr8dkzl.execute-api.us-east-1.amazonaws.com/production/user',
                reader: {
                    rootProperty: 'users',
                    totalProperty: 'totalCount'
                }
            }
        });

        Ext.create('Ext.grid.Panel', {

            renderTo:Ext.getBody(),
            id: 'myGrid',               
            title: 'Infinite Grid',
            width: 650,
            height: 500,
            store: store,
            scrollable: true,
            features: {
                ftype: 'grouping'
            },
            plugins: {
                gridfilters: true
            },

            columns: {
                defaults: {
                    filter: {
                        type: 'string'
                    }
                },
                items: [{
                    text: 'First Name',
                    width: 150,
                    dataIndex: 'firstName'
                }, {
                    text: 'Last Name',
                    width: 150,
                    dataIndex: 'lastName'
                }, {
                    text: 'Id',
                    width: 50,
                    dataIndex: 'id',
                    filter: {
                        type: 'number'
                    }
                } ]
            }
        });
    }
});

任何提示或例子请。小提琴可用。

您可以获得如下记录数:

store.getData().length
但问题是以前下载的数据被删除了(在我的示例中约有250项)

不明白为什么
getCount
返回总计数


您可以参考下面的fiddle,它实际上使用store的ajax代理来实现无限滚动。

编辑: 如果由于某些原因您想使用Ext.Ajax.request方法,您可以查看下面的fiddle,它使用Ajax.request方法来获取更多项目-

你是说ajax代理吗?或者确切地说是ajax?使用rest调用ajax好吧,我很困惑。您需要一个能够显示摘要数据的缓冲存储。事实上,缓冲存储用于替换分页存储。您必须对任何要显示的记录信息进行自定义编码。这还取决于中的前导缓冲区和尾随缓冲区,以确定缓冲存储区删除缓冲区设置之外的数据时实际可用的记录数。为什么不使用存储并用发送的起始点和结束点分页您的结果?这将是根据页面大小显示总记录、页面和记录的最快方式。这似乎是一个好建议,但我担心大数据是否会使我的网格变慢。噢,在BufferedStore中,如果您不想获取存储中的最大元素数,而是想获取最后一个边框,那么
getCount
将被覆盖和私有。lastRequestEnd如何使用ajax调用填充网格,有没有任何示例您指的是side ajax调用?在什么情况下应该这样做,为什么呢?我有两个过滤器要对响应进行过滤,所以寻找ajax调用来实现无限网格