0

ExtJS 6.2、ページング付きの MemoryStore を使用して、リモート ソースからデータを取得しようとしています。私が MemoryStore を使用している理由は、リモート ソースからデータを取得するために WebSocket を使用しているためです。表示するレコードが 1000 あり、1 ページあたり 10 項目を視覚化するとします。WebSocket からのこのコールバックを使用して最初のページを視覚化する場合は、うまくいきます。

function (message) {
  received_data = JSON.parse(message.data);
  me.store.getProxy().setData(received_data.data);
  me.store.loadPage(received_data.data.page);

それを機能させるには、データをストアに直接ロードするのではなく、プロキシに設定する必要がありました。1 のときreceived_data.data.pageはすべて問題ありません。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)}

しかし、グリッドには何も表示されません。ページング ツールバーに「表示するデータがありません」というメッセージが表示され、ストアが奇妙に見えます。私が言いたいのは、それにはデータがないということです。 アイテムなしと 0store.getData()を返します。store.getCount()

回避策は、視覚化したい最後のデータまでサーバーからすべてのデータを取得し、最後のページを表示することです。ページ 2 の場合、サーバーから JSON を取得できます。

{limit: 20, page: 2, start: 10, total: 1000, items: Array(20)}

それは期待どおりに機能しますが、もちろん、データセット全体ではなくデータの小さなチャンクを取得するためにページングを利用しないため、実行可能なソリューションではありません。

問題は、プロキシの動作に関連していると思われることです。pageつまり、 、startおよびlimitパラメータを使用してストアに入れる実際のデータを計算します。ボンネットの下でどのように機能するかについて十分に知らないので、思い通りに動作させるのに苦労しています。問題は、プロキシが正しいページングされたデータセットをストアに取得するように強制するにはどうすればよいかということです。

4

1 に答える 1