2

EXTJS 3 では、データ ストアとグリッドを定義していますが、正常に動作しています。問題はページングです。「次へ」ボタンイベントを手動で制御したいと思います。

ページングで「beforechange」イベントを使用しようとしましたが、「BEFORE」であるため機能しません。パラメータ値でストアを手動でロードする方法は?

サーバー側はC#です。

ありがとう

お店は

  var store = new Ext.data.DirectStore({
            storeId: 'store',
            directFn: Report.Function1,
            autoLoad: false,
            paramsAsHash: false,
            paramOrder: 'param1|start',
            ....
            fields: [ ...   ],
            remoteSort: false,          
        });

ページングは

var pager = new Ext.PagingToolbar({
            store: store,
            displayInfo: true,
            pageSize: this.pageSize,

            listeners: {
                beforechange: function (paging, params) {
                    currentPage = params.start;
                    report_search(params);
                }
            }
        });

 function report_search(page) {
    var store = Ext.StoreMgr.lookup('store');
    store.removeAll();

    store.load({
        params: {
            param1: Ext.getCmp("param1").getValue(),           
            start: page.start
        }
    });
}
4

1 に答える 1

0

ロードが完了する前に、ストアに特別なパラメータを適用したいようです。
これを行うには、次のものが必要です。

this.store.on('beforeload', this.applyParams.createDelegate(this));
...

applyParams: function(store, options) {
    options.params = options.params || {};

    var params = {
        param1: Ext.getCmp("param1").getValue()
    };

    Ext.apply(options.params, params);
}

「次へ」ボタンのクリックを拒否する必要がないことを願っています。これは、ストアを他の場所から (自動的に、他の場所から手動で) ロードできるためです。

于 2014-04-10T09:40:47.563 に答える