1

gridpanelの「initComponent」でストア変数を初期化します

    initComponent: function() {
        var store = Ext.create('Ext.data.Store', {
            model: 'MyDataObject',
            pageSize:_end,
            proxy: {
                 type: 'ajax',
                 url: myurl,
                 reader: {
                    type: 'json',
                    totalProperty: 'total', // total data, see json output
                    root: 'results'    // see json output                   
                 }
             }
        });
        this.store = store;
        this.callParent(arguments);
        this.store.load({params:{start:_star, limit:_end}
    });

次のように pagingtoolbar でストアを呼び出します

dockedItems: [
        {
            xtype: 'pagingtoolbar',
            dock: 'bottom',
            store: this.store,
            pageSize: _end,
            displayInfo: true,
            displayMsg: 'Displaying results {0} - {1} of {2}',
            emptyMsg: 'No results'
        }
]

私のグリッドパネルにはまだデータがありますが、私の下部には次のような「結果がありません」と表示されます ここに画像の説明を入力

問題はstore: this.store,だと思います。どうすればそれを機能させることができますか。

4

3 に答える 3

1

このようにストアを定義できます

Ext.define('MyApp.store.MyDataStore', {
        extend: 'Ext.data.Store',
        model: 'MyDataObject',
        storeId: 'myStoreId',
        pageSize:_end,
        proxy: {
             type: 'ajax',
             url: myurl,
             reader: {
                type: 'json',
                totalProperty: 'total', // total data, see json output
                root: 'results'    // see json output                   
             }
         }
    });

次に、myStoreId をグリッド パネルとページング ツールバーの両方の store-config に割り当てます。フレームワーク (StoreManager) は、両方に割り当てられる単一のストアを作成する必要があります。

その後、ストアで autoload=true を設定するか、グリッドの initComponent に新しいストアを作成して、手動でロードを行うことができます。

于 2013-06-17T08:39:46.547 に答える
0

昨日、この奇妙な問題に遭遇しました。この問題を修正する前に、ステータスがグリッドとページングバーの両方でストアの同期ではなかったと思います。Firebug でこの問題をデバッグするのに長い時間を費やしました。つまり、ストアは同じものではありません。それらはストアの同じインスタンスであるため、この問題を2つの方法で修正できます.1つ目はストアのグローバル変数を作成し、両方がそれを共有できます.2つ目はbindStoreメソッドを使用することです.たとえば、以下のようなグリッド拡張をサポートします

this.on('afterrender',function(){//this  is grid itself
        this.getBottomToolbar().bindStore(this.store)//set store of paggingtoolbar
    },this);
于 2013-09-06T04:05:20.810 に答える
-1

私はここextjsのリモートページンググリッドで解決策を見つけました 。コードは次のようにする必要があります:

        this.store = store;
        this.dockedItems = [{
           xtype: 'pagingtoolbar',
           store: this.store,
           displayMsg: 'Displaying results {0} - {1} of {2}',
           emptyMsg: 'No results',
           dock: 'bottom',
           displayInfo: true,
           pageSize: 22
        }];

        this.callParent(arguments);
        this.store.load({params:{start:0, limit:22}});
于 2013-06-17T08:39:13.840 に答える