extjs - 在 EXTJS 4 中,如何在 NEXT PAGE 单击 pagingtoolbar 时添加额外的参数

标签 extjs scroll-paging

我使用 EXTJS 4.2.1。

这是我的数据存储。

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

我在网格底部放了一个 pagintoolbar

  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;

如何让PAGE NEXT如我所愿,希望大神指点。

最佳答案

如果您需要在每个请求中包含参数,您可以在代理配置中使用 extraParams 设置它们配置。

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

如果可以在请求之间更改额外参数的值,您可以在监听器中设置它们以通过代理进行存储前加载事件 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);
})

关于extjs - 在 EXTJS 4 中,如何在 NEXT PAGE 单击 pagingtoolbar 时添加额外的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21729395/

相关文章:

Javascript正则表达式,在线测试网站上匹配正确,但代码错误

javascript - 在 Extjs 4 中更改按钮字体大小

ios - UICollectionView - 水平分页,3 个页面可见,1 个在中间使用 UICollectionView

ios - 以小于帧大小的增量分页 UIScrollView

ios - Collection View 分页定制

javascript - ExtJS 4 Form.submit() 没有成功 :true in answer

extjs - 如何更新 extjs 中的 tabPanel 项目标题(sencha touch)

ios - TableView 单元格中的 ScrollView 将无法正确显示图像,并且 swift 4 中的分页模式下有一页额外的页面

ios - iOS ScrollView 中图像的对称缩放

Extjs 网格通过搜索参数从提交加载