2012-01-25 71 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()來手動加載我的網格。

之前,這種方式我可以改變賣場的PARAMS像這樣:

//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(); 

我使用這需要返工,像樣的數目,以獲得完全4.0.7工作緩衝的網格。但這應該適合你。

另一種選擇是使用一個beforeload偵聽器,但我不確定是否通過更改extraParams來執行任何操作。您可能能夠修改傳遞給事件處理程序的Ext.data.Operation對象?

讓我知道如何爲你工作。

祝你好運!

+0

手動調用store.load()的作品,謝謝!我所意識到的是,最大的問題在於分頁工具欄上的按鈕。我如何更改點擊事件,以便像上面演示的那樣手動調用加載? – maximus

+0

對於分頁工具欄,它應該使用上次設置到商店的參數。所以你不想改變參數,除非通過你的過濾器。我錯了嗎? –

+0

你是對的!我只需要確保參數在beforeload中更新,並且它可以很好地工作。再次感謝約翰! – maximus