ExtJS 4.1 beta 2では、リモートストアで無限のスクロールグリッドを実装することができました。私は基本的に(フィルタリングやソート、遠隔店で)既存の(完全に動作)ページンググリッドを取った後、無限スクロールのための適切なコンフィグに入れる:それはdocsでこのどこにも言いませんExtJS無限スクロールグリッド(リモートフィルタとソートあり)
// Use a PagingGridScroller (this is interchangeable with a PagingToolbar)
verticalScrollerType: 'paginggridscroller',
// do not reset the scrollbar when the view refreshs
invalidateScrollerOnRefresh: false,
// infinite scrolling does not support selection
disableSelection: true,
(参照無限スクロールセクション)、店舗をbuffered: true
に設定する必要があります。すべては私がゆっくりスクロールするので、データをプリフェッチすることを可能にする場合は、任意のフィルタを使用し、ドンしていない素晴らしい作品、すべてのことで
store.prefetch({
start: 0,
limit: 200,
callback: function() {
store.guaranteeRange(0, 99);
}
});
:そして、あなたはそれがこのように行われる必要がありstore.load()
にロードすることはできませんソートを使用しないでください。
しかし、私が高速にスクロールしたり、フィルタをアクティブにしたり、ソートしている間に無限のスクロールグリッドを再作成しようとすると、すべてが壊れてしまいます。エラーはoptions is undefined
です。
私は時間コードにいくつかのトレースを行うと、グーグルのカップルを費やしてきたし、別に誰がリモートのフィルタおよびリモートスクロールで無限スクロールグリッドを実装していないと結論づけから、私は次のことを発見した:
それは、サーバからのより多くのデータを必要とするとき、フィルタリングが無限スクロールによって呼び出されるExt.data.Store
であるため、この方法を打破されています
mask: function() {
this.masked = true;
this.fireEvent('beforeload');
},
何らかの理由で、この方法はなしbeforeload
イベントを発生させますパラメータは、指定されたhereの一部であると考えられます。
その結果、エラーが原因で、もちろんExt.ux.grid.FiltersFeature
でonbeforeload
ハンドラで発生した「オプション」未定義です:
/**
* @private
* Handler for store's beforeload event when configured for remote filtering
* @param {Object} store
* @param {Object} options
*/
onBeforeLoad : function (store, options) {
options.params = options.params || {};
this.cleanParams(options.params);
var params = this.buildQuery(this.getFilterData());
Ext.apply(options.params, params);
},
私はPagingScrollerコードからこのmask
メソッドの呼び出しを切り出し、その後することができますスクロール機能は素晴らしいです。私は好きなだけ速くスクロールすることができ、データを適切に読み込みます。 しかし、の場合、フィルターとソートはajax要求に適用されません。
私は、ソート側面に同じくらい潜っていないが、ソートは単純operation
オブジェクトに含まれる他の要素であるので、私はそれをこのmask
方法と類似した何かを考え、それがアヤックスに渡される何操作対象を生じません要求。
私は(ドキュメントは、それがすることになっていると言うように)私はちょうどすべてがうまくなりますoperation
パラメータでbeforeload
を発射するmask
方法を強制する方法を見つけ出すことができればと考えています。問題は、私はそれを行う方法を理解することができませんでした。助言がありますか?
私が間違っていると言って、人々が実際にこの仕事をしたとすれば、私はインスパイアされますが、この問題やリンクを処理するために使用したオーバーライドのスニペットは非常に高く評価されます。
また、4.0.7と4.0.2aにダウングレードしてみましたが、同じ結果が得られました。それだけでベータの問題ではありません。
アップデート - 2月7日12:
それは実際にExt.ux.grid.FilterFeature
問題ない無限スクロールする問題がある可能性がありますようにこれがそうです。私がFilterFeatureの設定を完全に無限にスクロールしてもうまくいき、列で並べ替えると、ソートのパラメータがバックエンドに渡されます。私は物事のFilterFeatureの終わりを調べ始めるでしょう。
良い点。私はあなたが何を言っているかを見ています:店舗が保証範囲を下回ると、その範囲で保証範囲が固まり、それ以上の負荷はかかりません。あなたのソリューションの問題は、保証範囲がストアと同じサイズになり、結果としてプリフェッチしないということです。これは、グリッドが正常にスクロールされたときに、行200を超えるか、ページサイズはオーバーライドにソリューションを追加しましたが、これはあまり動的ではありません。私が静的な100に設定したguaranteeRange変数は、それが私のものだからです。 – Geronimo