2014-02-12 5 views
3

Я использую EXTJS 4.2.1.в EXTJS 4, как добавить дополнительные параметры, когда 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 
}); 

И я добавить 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: '...'}, 
    ... 
} 
Смежные вопросы