Ext Grid 翻页后丢失查询参数.

本文介绍如何在ExtGrid中实现翻页后保留查询参数的方法。提供了两种方案:一种是在beforeload事件中设置参数;另一种是在执行查询时设置参数,并提供了一种改进方案以适应调整每页数据量的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用Ext Grid的翻页工具翻页后, 保留设置的查询参数:

 

  

方法一, 在beforeload中设参数,

 

在查询的 form中,设置

this.grid.store.on('beforeload', this.beforeDataLoad, this);

  

/** 加载数据前, 读取查询参数. */
   beforeDataLoad : function() {
    var values =this.getForm().getValues();
    Ext.apply(this.grid.store.lastOptions.params, {
       queryMap : values
      });
   },

 

query:function(){
     this.grid.store.reload();

}

 

优点: 如果表单被修改, 在执行查询按钮以外的地方再载入数据时不用考虑读取查询, 可直接reload().

缺点: 可能在一些不希望查询的时候, 也会去读取查询表单的值.

 

 

方法二, 执行查询设参数

 

query:function(){
   varvalues = this.getForm().getValues();
   var params = this.grid.store.baseParams;   
   Ext.apply(params,values);
   this.grid.store.baseParams = params;
   this.grid.load();
}

 

这个是在网上找的, 但是用了一下后发现, 由于使用了调整当前页数据量的插件, 先翻页后查询时, 不保留翻页等信息

 

修改版: 适合当使用了调整当前页数据量插件时使用.

  /** 查询 */
   searchAction : function() {
    var values = this.getForm().getValues();
    Ext.apply(this.grid.store.baseParams, this.grid.store.lastOptions.params);
    Ext.apply(this.grid.store.baseParams, {
       queryMap : values
      });
    this.grid.store.load();     }

 

有个可能引起的问题是 : 每次查询后不是显示的第一页. 当然如果你不希望如此, 只需要修改一下start.

  this.grid.store.load({params:{
       start : 0
      }});

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值