`
niuyandong1988
  • 浏览: 618 次
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多
Flex自动过滤ComboBox,在网上找了几篇感觉BUG比较多,就自己写了一个。直接上代码,附件中是源码。
package com.ctsi.components
{
	import flash.events.Event;
	
	import mx.collections.ArrayCollection;
	import mx.controls.ComboBox;
	import mx.controls.TextInput;
	import mx.utils.StringUtil;

	public class FilterComboBox extends ComboBox
	{
		private var fullData:ArrayCollection;
		
		public function FilterComboBox() {
			addEventListener("creationComplete", init);
		}
		
		private function init(event:Event) : void {
			fullData = dataProvider as ArrayCollection;
		}
		 
        override protected function textInput_changeHandler(event:Event) : void {
			
			var data:ArrayCollection;
			var keyWord:String;
			
            super.textInput_changeHandler(event); 
			
			if (fullData){  
				
				keyWord = StringUtil.trim(textInput.text);
				
				if (keyWord == "" || keyWord == null)   
					data = fullData;
				else 
					data = filterData(keyWord);
				
				dataProvider = data;  
				dropdown.selectedIndex = -1;  
				dropdown.verticalScrollPosition = 0;  
				textInput.text = keyWord;
				TextInput(textInput).setSelection(keyWord.length, keyWord.length);
				
				open();  
			}  
	    } 
       
        private function filterData(keyWord:String) : ArrayCollection {
			
            var data:ArrayCollection; 
			var item:Object;
			var i:int;
			var value:String;
			
			data = new ArrayCollection(); 
			
            for (i = 0; i < fullData.length; i++) {  
                item = fullData.getItemAt(i);
				
                if (item.hasOwnProperty(labelField)) {  
                    value = item[labelField];  
                    if (value.indexOf(keyWord) != -1) {  
	                    data.addItem(item);  
	                }  
	            }  
	        }
			
            return data;  
	    } 
	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics