ExtJS 6.2理解loadPage使用分页存储时使用分页

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,startlimit来计算要放入商店的实际数据。由于我对引擎盖下的工作原理不够了解,所以我很难让它按照我想要的方式工作。所以问题是:我如何强制代理将正确的分页数据集传送到商店?

我挣扎了数周。我发布问题10分钟后,我自己找到了解决方案,pffffff。问题主要是由于启动参数。它总是必须为0,所以当我想要实现商店时,我必须为loadPage方法添加额外的参数。

me.store.loadPage(received_data.data.page, {start: 0});

这是否把戏对我来说。