无totalProperty的ExtJS无限滚动
在ExtJs中,我们总是需要totalProperty才能进行分页。 但这需要后端检索所有数据以计算“总计数”无totalProperty的ExtJS无限滚动,extjs,extjs6,Extjs,Extjs6,在ExtJs中,我们总是需要totalProperty才能进行分页。 但这需要后端检索所有数据以计算“总计数” 有没有一种方法可以让extjs分页/无限滚动在没有总计数的情况下工作?因此,我们只需继续滚动,直到它没有更多记录并在那里结束。totalCount属性可以在下一个AJAX请求期间更改(它不是常量值)。下面是classic toolkit v 7.1的示例: Ext.application({ name: 'Fiddle', launch: function () {
有没有一种方法可以让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。我明白了。所以每次请求,总数都会增加。我明白了。从未想过。很酷。谢谢你的建议。