2013-07-19 31 views
0

我想從分頁的ExtJS創建網格數據視圖。
實際上,當我創建一個簡單的數據網格時沒有問題。
然後,我想使用Ext Form創建一個「篩選/搜索」功能。
它只適用於第一頁。這裏是我下面的分機表格代號:重新加載下一個JSON數據網格ExtJS從分機形式的值

var winFilter = Ext.create('widget.window',{ 
title : 'Filter', 
width : 400, 
height : 200, 
modal : true, 
closeAction : 'hide', 
items : frmFilter, 
layout : 'fit', 
bodyPadding: 5, 
buttons:[ 
{ 
    text : 'Filter', 
    handler: function(btn){ 
     var win = btn.up('window'); 
     var form = win.down('form'); 
     tempProductID = form.getForm().findField('Product_ID').getSubmitValue(); 
     tempDescription = form.getForm().findField('Description').getSubmitValue(); 
     store.load({ 
      params: { 
       start: 0, 
       limit: itemsPerPage, 
       productid: form.getForm().findField('Product_ID').getSubmitValue(), 
       description: form.getForm().findField('Description').getSubmitValue() 
      } 
     }); 
     winFilter.hide(); 
    } 
}, 
{ 
    text : 'Close', 
     handler: function(){ 
     winFilter.hide(); 
    } 
} 
]}); 

下一個頁面,我的JSON返回所有數據,而無需使用我之前(產品ID和說明)使用的過濾值。
如果有任何建議請諮詢

謝謝了。

回答

1

params(當用作方法的參數load方法時)只應用一次。如果您想將這些PARAMS適用於每一個請求,你必須修改proxyextraParams屬性:

Ext.apply(store.proxy.extraParams, { 
    productid: form.getForm().findField('Product_ID').getSubmitValue(), 
    description: form.getForm().findField('Description').getSubmitValue() 
}, {}); 
store.load(); 

否則,您可以使用店內filter方法(store.remoteFilter應設置爲true):

store.filter([ 
    {property: "productid", value: form.getForm().findField('Product_ID').getSubmitValue()}, 
    {property: "description", value: form.getForm().findField('Description').getSubmitValue() 
]); 

不過需要注意的當使用filter方法時,請求url的過濾器部分具有不同的形式。在這種情況下,濾波器部分看起來像?filter=[{'property':'productid','value':2}]&limit=10...。而當使用params方法時,url看起來像?productid=2&limit=10...。所以當filter的方法被使用時,後端應該解析filter請求的屬性。