Flex 通用的表格过滤处理
- 博客分类:
- 技术杂绘
在上文"Flex AdvancedDataGrid表格过滤"中介绍了flat data和HierarchicalData的过滤处理,并且提到所谓表格过滤实质上就是表格的数据源过滤。本文继续假设表格的最终数据源就是Arraycollection,则表格过滤通用化处理,就是arraycollection的filterFunction通用化处理。
思路如下:
1)构造过滤条件列表;
2)过滤函数实现,根据过滤条件列表逐个进行验证,最终返回true或者false验证结果;
实现如下:
1)构造过滤条件列表
条件列表本身是一个array Collection,假设为conditions,其放置的对象为条件过滤对象,主要有4个元素:
column:要过滤的列名;
operator:操作符,有等于(=)、小于()、不等于(!=)、小于等于(=)、like(.)、not like(!.);
comparevalue:比较值
logical:逻辑值,and、or;
2)filterFunction实现
为了增加代码松耦合,将过滤处理的核心代码写成了一个类DataGridFilter,代码如下: publicclassDataGridFilter { privatestaticconst LOGICAL_AND:String = "AND"; privatestaticconst LOGICAL_OR:String = "OR"; // privatestaticconst OPERATOR_EQ:String = "="; privatestaticconst OPERATOR_LT:String = ""; privatestaticconst OPERATOR_LE:String = "="; privatestaticconst OPERATOR_NE:String = "!="; privatestaticconst OPERATOR_LIKE:String = "."; privatestaticconst OPERATOR_NOTLIKE:String = "!."; // publicfunctionDataGridFilter() { } publicfunction isMatched(item:Object, conditions:ArrayCollection):Boolean{ var ismatched:Boolean = true; for(var i:int=0; ivalue2; } } privatefunction isLE(value1:Object, value2:Object):Boolean{ if(value1==null){ returnfalse; }else{ return value1=value2; } } privatefunction isNE(value1:Object, value2:Object):Boolean{ returntrue; } privatefunction isLIKE(value1:Object, value2:Object):Boolean{ if(value1==null){ returnfalse; }else{ return value1.indexOf(value2)>-1; } } privatefunction isNOTLIKE(value1:Object, value2:Object):Boolean{ if(value1==null){ returnfalse; }else{ return value1.indexOf(value2)==-1; } } publicfunction isMatchedObject(item:Object, condition:Object):Boolean{ var value1:Object = item[condition["column"]]; var value2:Object = condition["comparevalue"]; switch(condition["operator"]){ case OPERATOR_EQ: return isEQ(value1,value2); break; case OPERATOR_LT: return isLT(value1,value2); break; case OPERATOR_GT: return isGT(value1,value2); break; case OPERATOR_LE: return isLE(value1,value2); break; case OPERATOR_GE: return isGE(value1,value2); break; case OPERATOR_NE: return isNE(value1,value2); break; case OPERATOR_LIKE: return isLIKE(value1,value2); break; case OPERATOR_NOTLIKE: return isNOTLIKE(value1,value2); break; } returntrue; } } 假设arraycollection.filterFunciton为filterFunc,则filterFunc实现如下:
privatefunctionfilterFunc(item:Object):Boolean{
var filter:DataGridFilter = new DataGridFilter();
// conditionList为过滤条件列表
return filter.isMatched(item,conditionList);
}
3)只要设置arraycollection的filterFunction为filterFunc,并且带上过滤条件列表即可实现表格的通用过滤处理,由于flat data和HierarchicalData数据源的构造方式不同,因此还需要做如下处理: if(conditionList.length>0){// conditionList过滤条件列表
if(_datagrid.dataProvider.source is HierarchicalData){
datagrid.dataProvider.source.source.filterFunction = filterFunc;
datagrid.dataProvider.source.source.refresh();
datagrid.dataProvider.source.refresh();
}else{
datagrid.dataProvider.filterFunction = filterFunc;
datagrid.dataProvider.refresh();
}
}else{
if(_datagrid.dataProvider.source is HierarchicalData){
datagrid.dataProvider.source.source.filterFunction = null;
datagrid.dataProvider.source.source.refresh();
datagrid.dataProvider.source.refresh();
}else{
datagrid.dataProvider.filterFunction = null;
datagrid.dataProvider.refresh();
}
}
发表评论
-
c++ 整形转换字符串例子
2012-07-06 09:52 1207第一种情况:输出正常 #include #inc ... -
正则表达式(解决问题)帖
2012-07-06 09:45 676主旨: 本贴为路过者解决一些需求的正则表达式问 ... -
温故知新 javascript 正则表达式
2012-07-06 09:37 653原文: http://www.cnblogs.com/li ... -
ASP.NET弹出一个对话框
2012-07-06 09:30 747i am now in university(HIT@We ... -
JS调用WMI获取客户机信息
2012-07-05 20:45 1124HTML和JS代码: 获取客户 ... -
重提URL Rewrite(2):使用已有组件进行URL Rewrite(转老赵blog)
2012-07-03 13:43 872可能已经没有人会使用上一篇文章中的方法进行URL Rewr ... -
Flex权威指南3学习笔记之一------界面知识(一)
2012-07-02 12:16 667最近在学习flex,正 ... -
Building a custom Flex preloader
2012-07-02 12:16 607http://www.adobe.com/devnet/f ... -
关于Flex4工程和 Alternativa3D 7.5.1的疑问
2012-07-02 12:16 646原文:http://bbs.9ria.com/thread ... -
使用blazeds实现flex和java交互
2012-07-02 12:16 717好久没研究flex 和 java 交互了,有个哥们问才拿起 ... -
flex与mysql交互
2012-07-01 09:50 501这个小例子通过remoteobject的通讯方法。实现fl ... -
Changing the layout direction of a form item in Flex
2012-07-01 09:49 740The following example shows h ... -
【转】 笔记本散热维护
2012-06-30 16:13 691【转】 笔记本散热维护 ... -
平板电脑和笔记本的区别是什么
2012-06-30 16:13 775平板电脑和笔记本的区 ... -
低价笔记本为什么低价?
2012-06-30 16:13 630低价笔记本为什么低价? ... -
笔记本购买知识全解
2012-06-30 16:13 452笔记本购买知识全解 2011年09月26日 笔记本购 ...
相关推荐
Flex高级表格标题分组与列的锁定,及样式
flex8表格控件,可以方便的实现表格的数据处理,并且里面附带了全面的例子,解决很多程序员的表格问题
很久之前 我曾在博客分享过我开发的电子表格组建 现在开源下 2 3年前写的 电脑里就有这个 可能不是最终的版本 应该会有很多bug 见谅
在FLEX4中开发带有过滤功能的DATAGRID组件
这个是针对与flex 的表格合并,包括表头合并,有好几种呈现方式,上面只是一种。
一个flex写的实现数据表格datagrid的实例。
flex电子表格 flex电子表格 flex电子表格
该实例展示了combobox通过输入进行过滤的数据源的方法,实现环境为flex4,测试通过,希望可以帮到你!
包括最新的高级表格研究,全部基于Flex3
parsley loc框架 flash flex 通用
java flex,flex通用分页控件
最近用到,flex datagrid最下面加上了合计功能,源代码,下载可导入直接运行
Flex FooterSpark DataGrid 高效Flex表格开发技术实例
Flex 表格的单元格合并的简单示例,易懂简单
Flex加载GIF动画处理类 ,Flex加载GIF动画处理类 ,Flex加载GIF动画处理类
FLEX双击左右移动表格中的数据,此小程序希望对大家会有些帮助。
直接就可用,如不明白可以去博客中查找相关内容。
FLEX4 修改表格的单元格背景色的工程文件
flex支持过滤的input,并显示出来,比如你在input 中输入个a它会把所有带a的显示出来,就类似google的模糊查询
NULL 博文链接:https://leopard0825.iteye.com/blog/585623