构造适合Java Web开发的GridFilters

extjs自带的GridFilters,默认是用于php后台的,如果你要用于java语言的后台,需要对该js进行改造【js:ext-3.3.1\examples\ux\gridfilters\GridFilters.js】

主要修改该js里面的两个方法:buildQuery : function (filters)和cleanParams : function (p)

    buildQuery : function (filters) {
var p = {};
var s = [];//临时保存所选的所有filter
for(var i=0, len=filters.length; i<len; i++){
var f = filters[i]; // f = {dataIndex, data, ....};
//alert(JSON.stringify(f));
if(f.data['comparison']!=null) {
if(!p[f.field]) {
p[ f.field ] = '';
}
p[f.field] += f.data['comparison'] + '@' + f.data['value'] +',';
}else {
p[f.field] = f.data['value'];
}
s.push(f.field);
}
p["buildQuery_gridFilterList"] = s.join(",");
return p;
},


    cleanParams : function (p) {
//alert(JSON.stringify(p));
var s = p["buildQuery_gridFilterList"] || "" ;
var k = s.split(",");
for(var i=0, len=k.length; i<len; i++){
var f = k[i];
delete p[f];
}
},


用firebug调试,可以看到参数自动以“key=value”的形式附加到url请求中了。

[b]注意[/b],如果grid指定了PagingToolbar,要注意给PagingToolbar增加plugins: filters(这里为你定义的filters对象变量名),这样才能带参数条件正常地翻页查询,不然翻页查询会出现错误的情形:如你在第2页的时候,突然去改变查询条件查询数据,会发现查不到数据(其实是有数据的),原因是分页组件的start值没有正确复位回0,导致系统直接去获取第二页的数据,如果你所查询的数据只有一页,那当然是没结果显示了)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值