0

私は extjs(4.1.0) MVC を使用しています。コンボ ボックス フィルター、datepicker フィルターなどを使用してカスタム グリッドを設定しています。コントローラー、ビュー、ストアからスニペットを添付しています。

入ってくるレスポンスがモデルと違うので、ストーリープロキシの read() をオーバーライドしてレスポンスを傍受します。また、データはペイロードで Json データとして送信する必要があるため、ストア プロキシの buildRequest() もオーバーライドして、json データをリクエストに追加します。(すべての並べ替え、ページング パラメータもここに追加されます) これに加えて、ビューには無限のスクロールがあります。

ビューは初めて正常にロードされます。ただし、コンボボックスの変更/日付の変更では、これらをリクエストでjsonパラメーターとして渡すことでストアがリロードされます。

firebug/chrome の XHR で応答が表示されますが、グリッドにはロード マスクが継続的に表示され、ロードを待機しています。

Ext.define('Message.store.ListingStore', {
extend: 'Ext.data.Store',
model: 'Message.model.ListingModel',
autoLoad: true,
remoteSort: true,
purgePageCount:0,
buffered: true,....
.......
proxy: {
    type: 'ajax',
    actionMethods: {
        read: 'POST'
        },
    url: 'http://localhost:8080
    buildRequest: function(operation) {
    Ext.apply(request, {
       params: null,
       jsonData: Ext.apply(request.params, {
           page: operation.page,
           start: operation.start,
           limit: operation.limit,
           catId:catValue,
           sort:operation.sorters[0].property,
           dir:operation.sorters[0].direction
       })
   });
   ........return request;
   }
   root: 'data',
        totalProperty:'total',
        successProperty :'success'
    },
.....
});

//controller

Ext.define('Message.controller.Listing', {
extend:'Ext.app.Controller',
stores:          ['ListingStore','SubscriptionStore','SubCategoryMasterStore','PriorityMasterStore'],
models: ['ListingModel'],
views: [
        'MessageListing'
    ],
init:function () {
    var controller = this;
'messagelisting  combo' : {
            select : this.handleComboSelect
        },

        'messagelisting  datefield' : {
            select : this.handleDateSelect
        },
 .....
 handleComboSelect : function(gridview, el, rowIndex, colIndex, e, rec, rowEl) {
    this.getStore('ListingStore').load();
},

handleDateSelect: function(gridview, el, rowIndex, colIndex, e, rec, rowEl) {
    this.getStore('ListingStore').load({callback: function(response){

    }});

これは非常に複雑なケースであるため、コード全体を投稿することはできません。ありがとうございました。

4

1 に答える 1

0

ここで私が説明した問題があると思います:
http://www.sencha.com/forum/showthread.php?242445-Grid-filters-race-conditions-FiltersFeature

よろしく、 アレク

于 2012-09-14T21:47:32.760 に答える