2014-02-12 2 views
3

EXTJS 4.2.1을 사용합니다., NEXT PAGE가 pagingtoolbar를 클릭 할 때 추가 매개 변수를 추가하는 방법

여기가 내 데이터 스토어입니다.

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 
}); 

그리고 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') 
    } 

는 OK이지만, 다음 페이지를 클릭했을 때, ds pramas은 서버에 POST을하지 않습니다. 소스를 조사합니다. 이런 코드를 찾았습니다.

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

내가 원하는대로 페이지 작업을 만드는 방법, 누군가에게 나에게 힌트를 주길 바랍니다.

답변

3

당신이 매개 변수는 모든 요청에 ​​포함되도록해야하는 경우 extraParams 설정하여 프록시 구성을 설정할 수 있습니다.

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); 
}) 
: 추가 매개 변수의 값이 요청 사이에서 변경 될 수 있습니다 경우

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

당신은 프록시로 저장 beforeload 이벤트에 대한 리스너에 setExtraParam 방법을 설정할 수 있습니다

3

모든 요청에 ​​포함될 매개 변수는 상점의 프록시에서 설정해야합니다. 어떤 프록시를 사용하고 있습니까? ajax 프록시에는 "extraParams"속성이 있습니다. 시도 해봐.

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