`
mqzsweet
  • 浏览: 135170 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

ComboBox实现输入自动过滤

    博客分类:
  • Flex
阅读更多
package com.beyondsoft   
{   
    import flash.events.Event;   
       
    import mx.collections.ArrayCollection;   
    import mx.controls.Alert;   
    import mx.controls.ComboBox;   
    import mx.events.FlexEvent;   
    import mx.utils.StringUtil;   
       
    /**  
     * ComboBox过滤自动完成组件  
     * @author 韩敬诺   
     *   
     */  
    public class AutoCompleteComboBox extends ComboBox   
    {   
        public function AutoCompleteComboBox()   
        {   
            if(!width){   
                //如果没有指定width则设置默认的宽度   
                width=120;   
            }   
            setStyle("paddingLeft","0");   
            selectedIndex=-1;   
            editable=true;   
            addEventListener("creationComplete",init);   
        }   
        private var ac:ArrayCollection;//保存数据源   
           
        /**  
         *   
         * @param event  
         *   
         */  
        private function init(event:Event):void{   
            ac=dataProvider as ArrayCollection;   
        }   
        /**  
         * 重写下三角按钮的点击事件  
         * @param event  
         *   
         */  
        override protected function downArrowButton_buttonDownHandler(event:FlexEvent):void{   
            dataProvider=ac;   
            super.downArrowButton_buttonDownHandler(event);   
        }   
        /**  
         * 当输入框中的值发生变化时开始过滤  
         * @param event  
         *   
         */  
        override protected function textInput_changeHandler(event:Event):void{   
            super.textInput_changeHandler(event);   
            //当数据源不为空并且关键字不为空时开始搜索数据源   
            if(ac){   
                var keyWord:String=StringUtil.trim(textInput.text);   
                if(keyWord){   
                    searchKeyWord(keyWord);    
                }   
            }   
        }   
        /**  
         *   
         * @param keyWord关键字  
         *   
         */  
        private function searchKeyWord(keyWord:String):void{   
            var dp:ArrayCollection=filterData(ac);   
            //当数据源改变的时候   
            if(dp.length>0){   
                dataProvider=dp;   
                dropdown.selectedIndex=-1;   
                dropdown.verticalScrollPosition=0;   
                textInput.setFocus();   
                //注意先设置关键字被选中后打开下拉列表   
                textInput.setSelection(keyWord.length,keyWord.length);   
                open();   
            }else{   
                dataProvider=ac;   
                textInput.text="";   
                selectedIndex=-1;   
                close();   
            }   
        }   
        /**  
         *   
         * @param item  
         * @return   
         *   
         */  
        private function filterData(ac:ArrayCollection):ArrayCollection{   
            var dp:ArrayCollection=new ArrayCollection();   
            for(var i:int=0;i<ac.length;i++){   
                var item:Object=ac.getItemAt(i);   
                if(item.hasOwnProperty(labelField)){   
                    var value:String=item[labelField];   
                    if(value.indexOf(textInput.text)!=-1){   
                        dp.addItem(item);   
                    }   
                }   
            }   
            return dp;   
        }   
    }   
}  

 

 

网上虽然有很多例子,但是写的都有很多bug,因此自己动手写了个组件。出现了一个难点就是如何点击下三角的时候数据源全部出来,看了ComboBox后才知道是这个方法downArrowButton_buttonDownHandler,因此重写这个方法就ok了。

思路:1监听textInput_changeHandler事件

          2 对数据源进行过滤

          3 重写下三角的点击事件

 

以上代码不是FLEX4的代码,使用时需改动

分享到:
评论

相关推荐

    C# ComboBox(winform) 显示多列 输入自动过滤

    2. **输入自动过滤**:实现输入自动过滤,我们可以订阅ComboBox的TextChanged事件。当用户在输入框中输入字符时,触发此事件。然后,遍历ComboBox的所有项,检查每一项的各个列是否以输入的字符开头。如果找到匹配的...

    #ComboBox自动补全小技巧(模糊查找)

    在ComboBox中实现此功能,我们需要监听用户输入事件,然后根据当前输入的文本动态过滤列表项。 二、C#实现步骤 1. 首先,确保你的项目引用了System.Windows.Forms命名空间,这是包含ComboBox控件的基础库。 ```...

    Flex实现自动过滤ComboBox

    在某些场景下,我们可能希望实现ComboBox的自动过滤功能,即当用户在输入框中输入字符时,下拉列表会实时更新,只显示与输入字符匹配的选项。这篇博客“Flex实现自动过滤ComboBox”将深入探讨如何通过源码实现这一...

    DataGridViewComboBox用户输入自动匹配问题点DEMO

    在实际应用中,我们经常需要实现用户输入时的自动匹配功能,即当用户在文本框中输入字符时,下拉列表会动态更新,显示出与输入字符匹配的选项。本DEMO主要解决的就是这个问题。 在`DataGridViewComboBox`中实现自动...

    自动筛选并完成输入 combobox edit

    综上所述,实现"自动筛选并完成输入的Combobox Edit"涉及到多个编程层面的知识,包括UI设计、事件处理、数据绑定、搜索算法以及性能优化等。理解和掌握这些技术点,对于开发高效、易用的应用程序至关重要。

    C#+ComboBox联想输入+代码类

    5. **设置SelectedIndex**:为了实现自动选中匹配的项,你可以设置ComboBox的SelectedIndex属性,使其指向过滤后列表的第一个项。 6. **优化性能**:在处理大量数据时,为避免频繁的过滤操作影响性能,可以考虑使用...

    【VB.NET】WinForm扩展TextBox和ComboBox控件:仿百度搜索框(输入文本智能模糊提示说明、自动匹配过滤)

    ComboBox控件可以输入文本...该自定义控件利用visual studio2017开发,使用VB.NET语言对TextBox和ComboBox进行了改写,实现类百度搜索框似的输入文本智能模糊提示说明、自动匹配过滤功能。具体效果请参阅本人相关博文。

    C#ComboBox自动补全小技巧

    总的来说,实现C# ComboBox的自动补全涉及到数据绑定、事件监听、数据过滤和优化,以及在ASP.NET环境下的Ajax处理。通过不断实践和积累,你可以创建出高效、灵活且用户体验良好的自动补全功能。这正是软件项目实施...

    c# combox根据输入自动查询

    然而,为了提供更友好的用户体验,开发人员常常需要实现一个功能,即“根据输入自动查询”,这正是“c# combox根据输入自动查询”这个主题所关注的核心点。这个功能允许用户在输入框中键入文字时,ComboBox会实时地...

    20120102 C#ComboBox自动补全小技巧

    在本篇内容中,我们将探讨2012年1月2日发布的一个关于C# ComboBox实现自动补全的小技巧,这是开发者在系统和软件项目实施过程中积累的经验。 首先,自动补全功能在用户界面设计中非常实用,它可以提升用户体验,...

    C#combobox内容搜索实例

    在本文中,我们将深入...总的来说,通过监听ComboBox的TextChanged事件并结合Linq的过滤方法,我们可以轻松地实现C#中ComboBox的动态搜索功能。这个功能极大地提高了用户查找所需信息的速度,提升了应用程序的易用性。

    VC++ combobox模糊匹配,自动匹配

    本知识点主要探讨如何实现Combobox的模糊匹配和自动匹配功能,这在开发具有智能搜索特性的应用时十分常见。 模糊匹配是允许用户输入部分关键字,系统就能找出与之匹配的数据项的技术。在Combobox中,这种功能可以极...

    ComboBox控件的自动查询技术源码

    总之,“ComboBox控件的自动查询技术源码”是一个实用的资源,提供了在VB环境中实现ComboBox动态过滤和自动补全功能的方法。通过深入研究并实践这个源码,开发者能够提升自己的编程技能,特别是在创建高效、用户友好...

    ComboBox带查询自动显示

    然而,标准的ComboBox并未内置查询自动显示功能,即用户在输入时不能实时过滤列表中的选项。为了解决这个问题,开发者通常需要自定义ComboBox控件,实现一个具有查询自动显示特性的组件。在"ComboBox带查询自动显示...

    实现ComboBox的自动完成功能(2.0)

    自动完成通常基于用户在文本框中输入的字符,实时过滤列表中的项目,只显示与输入相匹配的那些。这不仅提高了用户的输入效率,也提供了更好的用户体验。在.NET Framework 2.0中,虽然没有内置的自动完成支持,但可以...

    ComboBox控件的自动查询技术

    在VB(Visual Basic)编程中,利用ComboBox控件可以实现用户输入时的自动查询功能,提高用户体验,使得用户能快速找到所需的信息。这种技术常用于数据库查询、搜索栏等场景。 自动查询技术的核心在于,当用户在...

    改变ComboBox下拉高度/强行展开下拉表/自动查询列表/多列下拉框/XP风格Combobox/带图标的ComboBox

    3. 自动查询列表:在用户输入字符时自动过滤并显示匹配的列表项,这是一种常见的优化用户体验的方式。这通常通过处理WM_KEYDOWN消息,然后根据输入的字符更新ComboBox的内容来完成。可以使用BeginUpdate和EndUpdate...

    现实ComboBox(可编辑且可以自动提示的select选择框)

    2. **自动提示**:当用户在输入框中键入字符时,ComboBox能够根据已输入的字符自动过滤并显示匹配的选项,这极大地提高了用户的交互体验和选择效率。 3. **源码实现**:由于标签中提到了“源码”,这意味着这个...

    Qt 控件 实现 QComboBox输入自动提示功能(仿Google搜索提示)

    而实现QComboBox输入自动提示功能,可以极大地提升用户体验,类似于Google搜索框的自动完成效果。这个功能在开发过程中常用于减少用户的输入负担,提高数据选择的效率。本篇将详细介绍如何在C++中使用Qt库来实现这一...

    ComboBox+TreeView+自动补全

    在自定义ComboBox时,开发者通常会关注如何动态加载数据,如何根据用户输入进行过滤,以及如何实现自定义样式和行为。 TreeView控件则用于显示层次结构的数据,例如文件系统目录、组织结构或数据库记录。每个节点...

Global site tag (gtag.js) - Google Analytics