一天闲来无事,研究一下comboBox的应用,发现这两个方法,咋一看还有点不知所云,所以下定决心研究一下到底用来做啥的。
itemMatchingFunction
就是在提示输入区输入字符用来搜索时的回调函数。它是在textInput change时候触发的,会去按顺序匹配(忽略大小写)首先找到的那一项并选中它。
但是很多时候我们需要自定义一下搜索的规则,譬如我们不想它从开头开始严格匹配,只要包含了输入的字符就显示包含输入字符最接近位置的那一项。它返回的是一个vector<int>,然后comboxBox回选中vector中第一个index。代码见下面。
labelToItemFunction
就是你再搜索时,如果没有搜索到匹配的值,那么就返回这个函数的返回值。所以如果你想在没有搜索到就添加一项到comboBox的数据源,就要用到这个函数了。(代码见下面)
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:view="com.view.*"> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.collections.ArrayList; import spark.components.ComboBox; import spark.events.IndexChangeEvent; [Bindable] public var complexDP:ArrayCollection = new ArrayCollection( [ {ingredient:"Salmon", category:"Meat"}, {ingredient:"Potato", category:"Starch"}, {ingredient:"Cucumber", category:"Vegetable"}, {ingredient:"Steak", category:"Meat"}, {ingredient:"Rice", category:"Starch"}, {ingredient:"Cumin", category:"Spice"} ] ); private function myLabelFunction(item:Object):String { return item ? item.name + " " + item.phone : ""; } private function myMatchingFunction(comboBox:ComboBox, inputText:String):Vector.<int> { var vec:Vector.<int> = new Vector.<int>(); var maxIndex:int = -1; var findIndex:int; for(var i:int; i < complexDP.length; i++) { var index:int = String(complexDP.getItemAt(i).ingredient).indexOf(inputText); if( index > 0) { if(maxIndex == -1 || maxIndex > index) { maxIndex = index; findIndex = i; } } } vec.push(findIndex); return vec; } private function myLabelToItemFunction(input:String):* { return {ingredient:input, category:"mystery"}; } protected function bcc_changeHandler(event:IndexChangeEvent):void { if(complexDP.getItemIndex(bcc.selectedItem) == -1) { complexDP.addItem(bcc.selectedItem); } } ]]> </fx:Script> <s:layout> <s:VerticalLayout/> </s:layout> <s:ComboBox id="bcc" dataProvider="{complexDP}" itemMatchingFunction="myMatchingFunction" change="bcc_changeHandler(event)" labelToItemFunction="myLabelToItemFunction" width="150" selectedIndex="0" labelField="ingredient"/> </s:Application>
相关推荐
我在做项目时,经常用到easyUI框架,今天总结一下easyUI中的combobox吧 创建easyui-combobox的方法,在easyUI的官网都有: 1、从带有预定义结构的 元素创建组合框(combobox) <select id=cc class=easyui-...
现有的combobox只有单选功能,通过重画combobox构造多选combobox;
WPF在DataGrid列中使用ComboBox绑定,改变ComboBox可回传至绑定的实体, 网上找了好久,终于搞定了,不是那个用枚举的例子!!ComboBox绑定的是一个实体列表. 程序名字叫 给唐僧选老婆!哈哈
ZK中combobox的设置,combobox默认选项的设置,
改变ComboBox下拉高度/强行展开下拉表/自动查询列表/多列下拉框/XP风格Combobox/带图标的ComboBox 多个与ComboBox相关的源码工程下载
winform combobox 模糊查询
首先在窗体中添加一个comboBox1和一个imageList(本例中带有三个图片) this.comboBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
本方法和用checkbox, listbox等控件和事件拼凑出来的不同,本方法是一个集成的独立控件,基本实现了控件的顺滑度,下拉框可悬浮等效果,可以认为是comboBox的升级版,使用方便,仅需引用编译好的DLL,直接在toolBox...
优美好看的多选框 基于Combobox插件,模糊查询,Juqery插件,下拉,支持多选,单选,模糊查询
WPF combobox button 漂亮样式 自己开发用还是比较合适的,有助于界面美化
C# 自定义控件 自定义ComboBox。其他控件的自定义与此类似。
combobox的自动搜索功能,简单介绍asp.net下的实现方法
C# winforms ComboBox 重绘 相关的几个代码,来自codeproject
TreeComboBox:TreeView和ComboBox的组合功能 DataGridViewComboBox:DataGridView和ComboBox的组合功能 CustomerTreeView:TreeView功能增强版,可以根据数据库表或者本地表格自动生成数据状图。 这些控件代码都是我...
最近研究GDI+做了些小东西,看到网上关于ComboBox里添加颜色和Brush式样的帖子不多,发一个上来供大家参考
ComboBox Extending the ComboBox Class and Its Items.检查
解决了低版本spreadjs自带combobox,当cell处于页面最底部时,combobox下拉选项只能向下展开,导致下拉选项被遮挡的问题,重写之后,当下拉选项展示高度超出之后,自动向上展开,调用方式如下: import ...
C#语言编写,.net环境VS2005写的。ComboBox自动补全即模糊查找功能。在开发中很适应的例子。
每当选择好一个combobox中的变量执行操作后,可清空combobox,等待再次遴选变量