flex的表格过滤

本文介绍如何使用DataGrid组件对从数据库查询出的大量数据进行过滤,通过用户输入的关键字及选择的字段,实现数据的快速定位。

DataGrid经常用来充当表现数据源的角色,当我们面对很多一个从数据库里面查询出来的庞大结果集,要迅速获得我们所需的信息时,我们可以使用DataGrid进行数据过滤!

当我们使用DataGrid进行数据过滤的时候,真正过滤的是数据源,是对数据源进行过滤和操作,这点要先搞明白。我们举一个例子,下面的代码是组件代码,其中包括了label,inputText,combox,button。inputText用于接收用户查询关键字,combox进行字段选择,button用于触发查询动作。

<mx:HBox width="100%">
  <mx:Label text="输入关键字,在右边下拉框选择字段查询:"/>
  <mx:TextInput id="key"/>
  <mx:ComboBox id="cobox" dataProvider="{comboxDS}"/>
  <mx:Button label="关键字查询" click="this.filterDataGrid();"/>
 </mx:HBox>

在脚本的代码里面进行初始化

private function init():void{
  this.search();
  appearStandard=new AppearStandardObject();
  this.initUI();
  
  comboxDS=new ArrayCollection();
//  comboxDS.addItem({label:'查询全部',data:'any'});
  comboxDS.addItem({label:'外观规范',data:'appearCode'});
  comboxDS.addItem({label:'抽样计划',data:'samplePlan'});
 }

search函数用于从数据库里面获取全部数据,this.initUI()初始化用户界面组件,下面实例化comboxDS并且放进去我们需要进行过滤比较的数据库字段。

//过滤数据的函数
 private function filterDataGrid():void{
  list.filterFunction=filterFunc;//list.filterFunction=filterFunc(list)是错的,不要加参数;
  //数据源自己刷新
  list.refresh();
 
 }

点击触发按钮,执行上面的函数,对数据过滤。list为绑定的数据源,类型为ArrayCollection,查询完数据库后对其赋值。其中的filterFunction用于过滤数据的函数,list.refresh()表示数据源自动刷新,顺便说一下,Array这类数组类型的都有这样的函数,查查手册就知道了。接下来是对filterFunc的实现:

private function filterFunc(item:Object):Boolean{
  //combox里面选择的需要过滤的字段
  var col:String=this.cobox.selectedItem.data as String;
  //用户输入的需要查找的关键字;
  var keyword:String=this.key.text;
  
  if(keyword!=""){
   var value:String="";
   if(col!="any"){
    //定义一个字符串储存行对象的相应字段
    value=item[col];
    //判断所取出来的数据是否有关键字
    if(value.indexOf(keyword)>=0){
     return true;
    }
   }else{

   //其实与上面差不多,只是上面指定了具体字段,下面是没有具体字段搞一个遍历而已
    for(var o:String in item){
     value=item[o];
     if(value.indexOf(keyword)>=0){
      return true;
     }
    }
   }
  }else{
   return true;
  }
  return false;
 }

return true的时候表示该行有数据符合过滤条件。

在这里说明一下,我不会贴出全部源码,我也不知道怎么上传,大家如果有兴趣的话自己动手做做,编程的东西缺少实践一切都是废话。

总结一下,从数据库里面查询数据庞大,快速定位信息需要用户进行条件查询,根据用户输入的关键字,对list进行一个过滤,list数据源必须刷新,而且必须有一个过滤函数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值