一个很简单的过滤下拉框

 
Java代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>      
  2. <mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml" enter="toggleFilter(event)" editable="true">      
  3. <mx:Script>      
  4.     <![CDATA[      
  5.         import com.eshangrao.util.ObjectKeyMap;       
  6.         import mx.events.FlexEvent;      
  7.         import mx.collections.ArrayCollection;      
  8.               
  9.         //需要2个重要参数1.dataprovider:arrcoll 2.item.name的这个过滤属性       
  10.         private var _labelName:String = "labelName";       
  11.         public function set labelName( value:String ) : void       
  12.         {       
  13.                  _labelName = value;       
  14.                  invalidateProperties();       
  15.         }       
  16.         public function get labelName() : String      
  17.         {       
  18.                  return _labelName;       
  19.         }      
  20.           
  21.         private function toggleFilter(event:FlexEvent):void{      
  22.             //trace(this.text);      
  23.             //trace(event.currentTarget.text);      
  24.             if (event.currentTarget.text!="") {      
  25.                 //var filtStr:String=event.currentTarget.text;      
  26.                 this.dataProvider.filterFunction = processFilter;      
  27.             } else {      
  28.                 this.dataProvider.filterFunction = null;      
  29.             }      
  30.                 this.dataProvider.refresh();      
  31.             }      
  32.         private function processFilter(item:Object):Boolean {      
  33.             //trace((String)(item.name));      
  34.             //trace((String)(item["name"]));      
  35.             return ((String)(item[_labelName])).indexOf(this.text)==0;      
  36.             }      
  37.           
  38.     ]]>      
  39. </mx:Script>      
  40. </mx:ComboBox>    
<?xml version="1.0" encoding="utf-8"?>   
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml" enter="toggleFilter(event)" editable="true">   
<mx:Script>   
    <![CDATA[   
        import com.eshangrao.util.ObjectKeyMap;    
        import mx.events.FlexEvent;   
        import mx.collections.ArrayCollection;   
           
        //需要2个重要参数1.dataprovider:arrcoll 2.item.name的这个过滤属性    
        private var _labelName:String = "labelName";    
        public function set labelName( value:String ) : void    
        {    
                 _labelName = value;    
                 invalidateProperties();    
        }    
        public function get labelName() : String   
        {    
                 return _labelName;    
        }   
       
        private function toggleFilter(event:FlexEvent):void{   
            //trace(this.text);   
            //trace(event.currentTarget.text);   
            if (event.currentTarget.text!="") {   
                //var filtStr:String=event.currentTarget.text;   
                this.dataProvider.filterFunction = processFilter;   
            } else {   
                this.dataProvider.filterFunction = null;   
            }   
                this.dataProvider.refresh();   
            }   
        private function processFilter(item:Object):Boolean {   
            //trace((String)(item.name));   
            //trace((String)(item["name"]));   
            return ((String)(item[_labelName])).indexOf(this.text)==0;   
            }   
       
    ]]>   
</mx:Script>   
</mx:ComboBox>  

第一次写,很简单的。过滤条件也很简单,没用到正则表达式。(懒的去查资料),item[_labelName]这个动态获取属性的方法很重要,多亏了网友的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值