ExtJS 6.2理解loadPage使用分页存储时使用分页
我使用ExtJS 6.2,分页存储与分页并试图从远程源检索数据。我使用MemoryStore的原因是我使用WebSocket从远程源获取数据。 假设我有1000条记录要显示,并且我想要每页显示10个条目。工作的事情,当我想从WebSocket的回调以可视化的第一页:ExtJS 6.2理解loadPage使用分页存储时使用分页
function (message) {
received_data = JSON.parse(message.data);
me.store.getProxy().setData(received_data.data);
me.store.loadPage(received_data.data.page);
为了得到它的工作我必须在代理设置数据,而不是直接加载到店。当received_data.data.page
是1时,一切都很好。 received_data.data
包含一个JSON看起来像:
{limit: 10, page: 1, start: 0, total: 1000, items: Array(10)}
问题就出来了,当我切换到第2页的received_data.data
现在是:
{limit: 20, page: 2, start: 10, total: 1000, items: Array(10)}
但网格不显示任何内容。分页工具栏显示'No data to display'消息,并且商店看起来很奇怪。我的意思是它没有数据。 store.getData()
和store.getCount()
不返回任何项目和0.
解决方法是从服务器获取所有数据,直到最后一个我想要显示并显示最后一页。在第2页的情况下,我可以从服务器获取JSON:
{limit: 20, page: 2, start: 10, total: 1000, items: Array(20)}
这将作为工作的期望,但当然不是一个可行的解决方案,因为我不会采取分页的优势,只是检索小数据块而不是整个数据集。
问题是,我怀疑它与代理的工作方式有关。即,它使用参数page
,start
和limit
来计算要放入商店的实际数据。由于我对引擎盖下的工作原理不够了解,所以我很难让它按照我想要的方式工作。所以问题是:我如何强制代理将正确的分页数据集传送到商店?
我挣扎了数周。我发布问题10分钟后,我自己找到了解决方案,pffffff。问题主要是由于启动参数。它总是必须为0,所以当我想要实现商店时,我必须为loadPage方法添加额外的参数。
me.store.loadPage(received_data.data.page, {start: 0});
这是否把戏对我来说。