2014-02-12 51 views
3

我使用EXTJS 4.2.1。EXTJS 4,如何添加額外的參數當下一頁點擊分頁工具欄

這是我的數據存儲。

Ext.define("user",{ 
    extend:"Ext.data.Model", 
    fields:[ 
    {name:'mobile',type:'string',sortable:true}, 
    {name:'name',type:'string',sortable:true}, 
    {name:'month',type:'string',sortable:true}, 
    {name:'city',type:'string',sortable:true}, 
    {name:'mail_number',type:'string',sortable:true} 
    ] 
}); 

var user = Ext.create("user",{}); 

var ds = Ext.create("Ext.data.Store",{ 
    model:'user', 
    storeId:'s_user', 
    pageSize: 20, 
    proxy:{ 
     type:'ajax', 
     timeout: 40000, 
     url:'JSONServlet', 
     reader:{ 
     type:'json', 
     root:'rows' 
     }, 
     writer:{ 
     type:'json' 
     } 
    }, 
    autoLoad:false 
}); 

,然後加一些PARAMS其中ds負荷。

ds.load({ 
       params:{start:0, limit:20,  
        'type': Ext.getCmp('type').value, 
        'city': Ext.getCmp('city').value, 
        'date': Ext.getCmp('date').value, 
        'date1': Ext.getCmp('date1').value 
       }  
      }) 

我把一個pagingtoolbar放在網格的底部。

var grid = Ext.create("Ext.grid.Panel",{ 

     ... 

     dockedItems :[{ 
      xtype:'pagingtoolbar', 
      store:Ext.data.StoreManager.lookup('s_user'), 
      dock:'bottom', 
      displayInfo:true 
     }], 

     ... 
     store : Ext.data.StoreManager.lookup('s_user') 
    } 

在第一頁上一切正常,但是點擊下一頁時,ds pramas不POST服務器。 我看着源頭。我找到這樣的代碼。

 case "next": 
       ds.load({params:{start: this.cursor+this.pageSize, limit: this.pageSize}}); 
      break; 

如何使頁面下一步工作,因爲我想,我希望有人給我一個提示。

回答

3

如果你需要的參數將被包含在每次請求,你可以將它們與extraParams配置代理配置。

proxy:{ 
     // ... 
     extraParams: { 
      'type': Ext.getCmp('type').value, 
      'city': Ext.getCmp('city').value, 
      'date': Ext.getCmp('date').value, 
      'date1': Ext.getCmp('date1').value 
     } 
     // ... 
}, 

如果額外的參數值可以請求之間變化,你可以通過代理設置它們監聽店beforeload事件setExtraParam方法:

ds.on('beforeload', function() { 
    var proxy = ds.getProxy(); 
    proxy.setExtraParam('type', Ext.getCmp('type').value); 
    proxy.setExtraParam('city', Ext.getCmp('city').value); 
    proxy.setExtraParam('date', Ext.getCmp('date').value); 
    proxy.setExtraParam('date1', Ext.getCmp('date1').value); 
}) 
3

應該在商店的代理上設置每個請求中包含的任何參數。 你使用什麼代理? ajax代理有一個屬性「extraParams」。試一試。

proxy: { 
    type: 'ajax', 
    url: '...', 
    extraParams: {type: '...',city: '...',date: '...',date1: '...'}, 
    ... 
}