2017-10-12 78 views
0

我使用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來計算要放入商店的實際數據。由於我對引擎蓋下的工作原理不夠了解,所以我很難讓它按照我想要的方式工作。所以問題是:我如何強制代理將正確的分頁數據集傳送到商店?

回答

0

我掙扎了數週。我發佈問題10分鐘後,我自己找到了解決方案,pffffff。問題主要是由於啓動參數。它總是必須爲0,所以當我想要實現商店時,我必須爲loadPage方法添加額外的參數。

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

這是否把戲對我來說。