`
luhantu
  • 浏览: 205161 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

comboBox 的 itemMatchingFunction & labelToItemFunction

阅读更多

一天闲来无事,研究一下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>

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    winform combobox 模糊查询

    在Windows Forms应用程序中,ComboBox控件是常用的交互元素,它允许用户从一组预定义的选项中选择一个。在某些情况下,我们可能希望实现ComboBox的模糊查询功能,这使得用户可以通过输入部分文本快速查找并选择所需...

    QML-自定义ComboBox

    在本文中,我们将深入探讨如何在Qt环境中使用QML实现一个自定义的ComboBox组件。ComboBox在用户界面设计中是一个常见的控件,它提供了一个下拉列表供用户选择,通常用于有限的选项展示。通过自定义ComboBox,我们...

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

    在Windows编程中,ComboBox是一个非常常用的控件,它结合了文本输入框和下拉列表的功能。这个主题涵盖了几个关于ComboBox的高级特性和定制方法,包括改变下拉高度、强制展开下拉列表、实现自动查询功能、创建多列...

    easyUI combobox实现联动效果

    我在做项目时,经常用到easyUI框架,今天总结一下easyUI中的combobox吧 创建easyui-combobox的方法,在easyUI的官网都有: 1、从带有预定义结构的 元素创建组合框(combobox) &lt;select id=cc class=easyui-...

    WPF在DataGrid列中使用ComboBox绑定,改变ComboBox可回传至绑定的实体,ComboBox绑定的是一个实体

    WPF在DataGrid列中使用ComboBox绑定,改变ComboBox可回传至绑定的实体, 网上找了好久,终于搞定了,不是那个用枚举的例子!!ComboBox绑定的是一个实体列表. 程序名字叫 给唐僧选老婆!哈哈

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

    在.NET框架下,ComboBox控件是Windows Forms应用程序中常见的组件,用于展示下拉列表供用户选择。本教程将深入探讨如何在C#环境下,利用VS2005为ComboBox添加自动补全或模糊查找功能,这在实际开发中非常实用,能够...

    Delphi在stringGrid控件中嵌入Combobox下拉框

    然而,有时我们可能需要在特定单元格中提供更丰富的交互功能,比如添加一个Combobox(下拉框)来让用户从预设选项中选择。本教程将详细介绍如何在StringGrid中嵌入Combobox控件,以增强用户界面的可操作性和用户体验...

    多选框Combobox

    多选框(Checkbox)和下拉选择框(ComboBox)是常见的用户输入组件,它们允许用户进行多项选择或从预设选项中选择。本篇文章将深入探讨基于jQuery的Combobox插件,这是一种将多选框与下拉功能结合的高效解决方案,...

    C#combobox内容搜索实例

    在本文中,我们将深入探讨如何在C#编程中实现ComboBox控件的动态搜索功能,以提升用户界面的交互性和效率。ComboBox是Windows Forms应用程序中常用的一种控件,它允许用户从下拉列表中选择一个项或者手动输入内容。...

    ComboBox中添加颜色和式样

    在Windows编程中,ComboBox是一个非常常用的控件,用于展示下拉列表供用户选择。当我们需要在ComboBox中添加更丰富的元素,比如颜色和样式,通常会涉及到GDI+库的使用,因为GDI+提供了强大的图形绘制功能。这篇教程...

    WPF combobox button 漂亮样式

    在Windows Presentation Foundation (WPF) 中,ComboBox是一个常用的控件,它结合了下拉列表和文本框的功能,允许用户从预定义的选项中选择或输入自定义值。本篇文章将详细探讨如何为WPF ComboBox创建漂亮的按钮样式...

    C# winforms ComboBox 重绘

    在C# WinForms开发中,ComboBox控件是一个常用的组件,用于提供下拉列表供用户选择。然而,有时候我们可能需要自定义ComboBox的外观或者功能,这就涉及到ComboBox的重绘技术。下面将详细介绍C# WinForms中ComboBox重...

    winform combobox多选扩展

    现有的combobox只有单选功能,通过重画combobox构造多选combobox;

    Delphi7StringGrid内动态添加ComBoBox的值

    然而,有时我们可能需要在特定单元格内嵌入更复杂的控件,比如ComboBox,以提供下拉选择的功能。本篇文章将详细讲解如何在Delphi 7的StringGrid中动态地添加ComboBox控件,并为Grid赋值。 首先,我们需要理解...

    用在asp.net的combobox控件

    ASP.NET中的ComboBox控件是一种非常实用的用户界面元素,它结合了下拉列表框和文本输入框的功能,允许用户从预定义的选项中选择或手动输入值。在C#编程中,ComboBox通常用于构建交互性强、用户体验良好的Web应用程序...

    C# 自定义控件 自定义ComboBox

    5. **美化ComboBox**:文件“美化ComboBox”可能包含对ComboBox外观的定制代码,如改变字体、颜色、边框样式等。这可以通过重写OnPaint方法实现。 ```csharp protected override void OnPaint(PaintEventArgs e) { ...

    combobox 去掉边框,更改背景色 字体颜色

    在Windows Forms开发中,`ComboBox`控件是一个常用的组件,用于提供用户选择一个或多个预定义选项的功能。本文将详细讲解如何实现“去除`ComboBox`边框,改变背景色以及字体颜色”的效果,以满足自定义UI的需求。...

    AE中添加使用comboBox进行添加图层VB代码

    AE 中使用 comboBox 添加图层 VB 代码详解 在 ArcEngine(AE)开发中,添加图层是非常常见的操作。为了实现图层的添加和字段的显示,我们可以使用 comboBox 控件来实现。下面我们将详细介绍如何使用 comboBox 在 AE...

    ComboBox

    ComboBox是计算机编程中常见的一种控件,特别是在GUI(图形用户界面)设计中。它结合了文本输入框和下拉列表的功能,用户可以在输入框中键入文字,也可以从下拉列表中选择已有的选项。在Windows编程、Web开发、...

    Combobox控件某些项不能选的例子

    在C#编程中,Combobox控件是一种常用的用户界面元素,用于展示一组可选项供用户选择。在“Combobox控件某些项不能选的例子”这个问题中,我们关注的是在Visual Studio 2008环境下创建的Combobox,其中部分选项显示为...

Global site tag (gtag.js) - Google Analytics