Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/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
无totalProperty的ExtJS无限滚动_Extjs_Extjs6 - Fatal编程技术网

无totalProperty的ExtJS无限滚动

无totalProperty的ExtJS无限滚动,extjs,extjs6,Extjs,Extjs6,在ExtJs中,我们总是需要totalProperty才能进行分页。 但这需要后端检索所有数据以计算“总计数” 有没有一种方法可以让extjs分页/无限滚动在没有总计数的情况下工作?因此,我们只需继续滚动,直到它没有更多记录并在那里结束。totalCount属性可以在下一个AJAX请求期间更改(它不是常量值)。下面是classic toolkit v 7.1的示例: Ext.application({ name: 'Fiddle', launch: function () {

在ExtJs中,我们总是需要totalProperty才能进行分页。 但这需要后端检索所有数据以计算“总计数”


有没有一种方法可以让extjs分页/无限滚动在没有总计数的情况下工作?因此,我们只需继续滚动,直到它没有更多记录并在那里结束。

totalCount属性可以在下一个AJAX请求期间更改(它不是常量值)。下面是classic toolkit v 7.1的示例:

Ext.application({
    name: 'Fiddle',
    launch: function () {


        // Store Model
        Ext.define('ForumThread', {
            extend: 'Ext.data.Model',

            fields: [
                'title'
            ]
        });

        // Named Buffered Store
        Ext.create('Ext.data.BufferedStore', {
            storeId: 'threadsStore',

            model: 'ForumThread',

            leadingBufferZone: 2,
            pageSize: 10,

            proxy: {
                type: 'ajax',
                url: 'data1.json',
                reader: {
                    rootProperty: 'topics',
                    totalProperty: 'totalCount'
                },
            },
            autoLoad: true,
        });

        // Infinite Grid using the Buffered Store
        Ext.create('Ext.grid.Panel', {
            title: "Infinite Grid",

            store: "threadsStore",

            renderTo: Ext.getBody(),
            width: "100%",
            height: 400,

            features: [{
                ftype: 'grouping',
            }],

            plugins: [{
                ptype: 'bufferedrenderer'
            }],

            columns: [{
                dataIndex: 'title',
                flex: 1
            }]


        });
    }
});
以及动态数据:

var totalCount = params.start + 10*params.limit;
var topics = [];
for(i=params.start; i<params.start+params.limit; i++) {
    topics.push({
        title: 'title_' + i
    })
}
return {
    "totalCount": totalCount,
    "topics": topics
};
var totalCount=params.start+10*params.limit;
var主题=[];

对于(i=params.start;i可以在下一个AJAX请求期间更改totalCount属性(它不是常量值)。下面是classic toolkit v 7.1的示例:

Ext.application({
    name: 'Fiddle',
    launch: function () {


        // Store Model
        Ext.define('ForumThread', {
            extend: 'Ext.data.Model',

            fields: [
                'title'
            ]
        });

        // Named Buffered Store
        Ext.create('Ext.data.BufferedStore', {
            storeId: 'threadsStore',

            model: 'ForumThread',

            leadingBufferZone: 2,
            pageSize: 10,

            proxy: {
                type: 'ajax',
                url: 'data1.json',
                reader: {
                    rootProperty: 'topics',
                    totalProperty: 'totalCount'
                },
            },
            autoLoad: true,
        });

        // Infinite Grid using the Buffered Store
        Ext.create('Ext.grid.Panel', {
            title: "Infinite Grid",

            store: "threadsStore",

            renderTo: Ext.getBody(),
            width: "100%",
            height: 400,

            features: [{
                ftype: 'grouping',
            }],

            plugins: [{
                ptype: 'bufferedrenderer'
            }],

            columns: [{
                dataIndex: 'title',
                flex: 1
            }]


        });
    }
});
以及动态数据:

var totalCount = params.start + 10*params.limit;
var topics = [];
for(i=params.start; i<params.start+params.limit; i++) {
    topics.push({
        title: 'title_' + i
    })
}
return {
    "totalCount": totalCount,
    "topics": topics
};
var totalCount=params.start+10*params.limit;
var主题=[];

对于(i=params.start;这不是一个ExtJS问题,这是一个数学问题。在不知道估计的记录数的情况下,您如何调整滚动条的大小?后端只需要返回一个包含totalCount的属性,而不是所有记录,以便您在客户端进行计数。我认为Neo正在寻找类似facebook的东西。他们不断增加scr滚动条让用户向下滚动。当您到达当前数据集的末尾时,会添加更多。这会造成糟糕的用户体验。您可以使用多种滚动方法(onScrollEnd、onScrollMove、onScrollStart等)使用extjs创建这样的组件。也就是说,大多数现代数据库都允许计数(*)这将返回给定查询的总记录数。@mcg1103-ya,这就是我要找的。似乎在ExtJS中除了自己编写代码之外没有其他方法。不是太多BE/数据库人员。不确定cassandra是否可以这样做。但是无论如何,您仍然需要读取所有记录才能获得计数(逻辑上),对吗?。那么您不是在寻找一个返回所有记录的服务器端存储。基本上,您需要的是一个客户端网格,带有滚动侦听器,每次到达末尾时,您都会下载另外10100条记录(取决于行的大小).ExtJS不会。这不是一个ExtJS问题,这是一个数学问题。在不知道估计记录数的情况下,如何调整滚动条的大小?后端只需要返回一个包含totalCount的属性,而不是客户端要计算的所有记录。我想Neo正在寻找s像facebook这样的东西。他们不断增加滚动条,让用户向下滚动。当你到达当前数据集的末尾时,会添加更多的滚动条。这会造成糟糕的用户体验。你可以使用多种滚动方法(onScrollEnd、onScrollMove、onScrollStart等)使用extjs创建这样的组件。也就是说,大多数模式都是如此rn数据库允许一个计数(*),它将返回给定查询的总记录计数。@mcg1103 ya,这就是我正在寻找的。似乎在ExtJS中除了自己编写代码之外没有其他方法。BE/数据库人员不太多。不确定cassandra是否可以这样做。但无论如何,您仍然需要读取所有记录才能获得计数(逻辑上)我说的对吗?那么你不是在寻找一个返回所有记录的服务器端存储。基本上,你想要的是一个客户端网格和一个滚动监听器,每当你到达最后,你会下载另外10100条记录(取决于你的行有多大)。还有其他网格可以做你想做的。ExtJS不会。你的意思是在beforeprefetch事件中添加它吗?更改存储区的totalCount不会破坏网格?不,我的意思是更改服务器端的totalCount。我明白了。所以每次请求,总数都会增加..我明白了。从来没有想过。酷。谢谢你的建议。你知道吗你的意思是将其添加到beforeprefetch事件中?更改存储区的totalCount不会破坏网格?不,我的意思是更改服务器端的totalCount。我明白了。所以每次请求,总数都会增加。我明白了。从未想过。很酷。谢谢你的建议。