2012-01-25 9 views
0

パラメータ:ExtJS4変更するデータストアが

store = Ext.create('Ext.data.Store', { 
    fields: [{ 
     name: 'id' 
    }, { 
     name: 'filename' 
    } 
    // other fields here ... 
    ], 
    proxy: { 
     type: 'ajax', 
     url: 'http://myniftyurl.com/blah', 
     simpleSortMode: true, 
     reader: { 
      type: 'json', 
      totalProperty: 'total', 
      root: 'result' 
     }, 
     extraParams: { 
      'limit': Ext.get('itemsPerPage').getValue(), 
       'to': Ext.get('to_date').getValue() 
      // other params 
     } 
    }, 
    model: 'Page', 
    remoteFilter: true, 
    remoteSort: true 
}); 

値「と」「限界」とは、ユーザ入力に基づいて変更されますが、そこに問題があります。データストアは、新しい入力の代わりに元のパラメータを使用し続けます。これをどうすれば解決できますか?

ありがとうございます!

+0

MVCパターンを使用していますか? (すなわち、これの後ろにコントローラがありますか?) –

+0

実際にはありません – maximus

答えて

2

通常、コントローラーでstore.load()を実行することによって、手動でグリッドをロードします。私は完全に4.0.7での作業を取得するためにリワークのまともな量を必要なバッファリンググリッドを使用してい

//getForm() retrieves the Ext.basic.Form (from Ext.panel.Form) 
var params = this.getForm().getValues(); 

//Write over 
grid.getStore().getProxy().extraParams = params; 

//load 
grid.getStore().load(); 

:ところで前に、それまで私がそうのような店ののparamsを変更することができます

。しかし、それはあなたのために働くはずです。

もう1つの選択肢は、リスナーbeforeloadを使用することですが、それによってextraParamsを変更すると何かが行われるかどうかはわかりません。イベントハンドラに渡されるExt.data.Operationオブジェクトを変更することができますか?

どのようにあなたのために働くか教えてください。

幸運を祈る!

+0

手動でstore.load()が呼び出されます。私が気づいているのは、大きな問題はページングツールバーのボタンだということです。上記のように手動でロードを呼び出すことができるように、クリックイベントを変更するにはどうすればよいですか? – maximus

+0

ページングツールバーでは、最後にストアに設定されたパラメータを使用する必要があります。したがって、作成したフィルタ以外のパラメータを変更する必要はありません。私が間違っている? –

+0

あなたは正しいです!私はパラメータがbeforeloadで更新されていることを確認しなければならず、それは完全に機能します。もう一度ジョンに感謝します! – maximus

関連する問題