私は 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){
}});
これは非常に複雑なケースであるため、コード全体を投稿することはできません。ありがとうございました。