在ExtJS 4.1測試版2我設法實現了無限滾動網格與遠程存儲。我基本上採取了一個現有的(全面運作)尋呼網格(與遠程存儲,篩選和排序),然後把在無限滾動適當CONFIGS: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,
這並不是說在這個docs任何地方(見無限滾動部分),但您需要將商店設置爲buffered: true
配置。你不能store.load()
加載它必須這樣做:
store.prefetch({
start: 0,
limit: 200,
callback: function() {
store.guaranteeRange(0, 99);
}
});
有了這一切,一切都很正常,如果我慢慢地滾動,從而使數據預取,不使用任何過濾器和Don不使用任何排序。
但是,如果我快速滾動或嘗試使無限滾動網格重新加載過濾器處於活動狀態,或者在排序過程中將其全部分開。錯誤是options is undefined
。
我已經花了幾個小時做一些跟蹤代碼和得出的結論是,沒有人實施遠程過濾器和遙控器滾動的無限滾動網格和谷歌搜索之外,我發現以下幾點:
過濾被打破,因爲在Ext.data.Store
這種方法是通過當它從服務器需要更多數據的無限滾動叫下來:
mask: function() {
this.masked = true;
this.fireEvent('beforeload');
},
出於某種原因,這種方法觸發beforeload
事件沒有的Ext.data.Operation
參數應該是它的一部分,如指定的here。
/**
* @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
方法:
其結果是,因爲當然「選項」是未定義在onbeforeload
處理程序發生在Ext.ux.grid.FiltersFeature
錯誤滾動功能非常棒。我可以像我喜歡的那樣快速滾動,並正確加載數據。 但然後過濾器和排序不適用於ajax請求。
我沒有潛儘可能多的進入分選方面,但我認爲這種方法mask
類似的東西,因爲那種僅僅是由operation
對象所包含的另一個元素,它會導致沒有操作對象被傳遞給Ajax請求。
我在想,如果我可以弄清楚如何強制mask
方法火beforeload
與operation
參數(如文檔說是應該)一切都會好起來。問題是,我一直無法弄清楚如何做到這一點。有什麼建議麼?
如果有人會告訴我我錯了,而且人們實際上已經做出了這個工作,我會受到鼓舞,但是用來解決這個問題的任何重寫的片段或鏈接都將非常感激。
我也嘗試降級到4.0.7和4.0.2a,我得到了相同的結果,所以它不僅僅是一個測試版問題。
更新 - 12年2月7日:
這似乎是它實際上可能是Ext.ux.grid.FilterFeature
問題不是一個無限滾動的問題。如果我刪除了FilterFeature配置,則完全無限滾動效果很好,並且在按列排序時會將排序參數傳遞給我的後端。我將開始研究FilterFeature結束的事情。
不錯的地方。我明白你在說什麼,我認爲:當商店過濾到低於保證範圍時,保證範圍將保持在該數量,並且不會加載更多。雖然解決方案的問題是保證範圍將與商店的大小相同,並且不會因爲預取而導致結果,這意味着當網格正常滾動時,一旦您通過行200或任何頁面大小是。我在覆蓋中添加了一個解決方案,但它不是很動態。我設置爲static 100的guaranteeRange變量,因爲這是我的。 – Geronimo 2012-02-26 02:48:26