2.6 设置 控件的 labelFunction
2.6.1 问题
你需要综合 data provider 中的不同部分来定制 comboBox 组件里面的标签。
2.6.2 解答
用 comboBox 的 labelFunction 属性来指派一个自定义的函数,这个函数定义了显示的标签。
2.6.3 讨论
默认情况下, Flex 里的列表组件是在 dataProvider 的项目里寻找 label 属性作为显示的内容。可是,在某些情况下, dataProvider 没有 label 属性,或者你需要显示的内容是从 dataProvider 的项目里的多个部分组合起来的。 labelFunction 属性允许为 dataProvider 的项引用一个用户定义的方法,并为每项返回一个显示标签。
在如下的例子中, comboBox 的 labelFunction 属性包含了对 getFullName 函数的引用,那个函数将 dataProvider 的每项里的 fName 和 lName 部分连接起来并返回这个全名字符串。请看:
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="horizontal">
<mx:ComboBox dataProvider="{myDP}" labelFunction="getFullName"/>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
private var myDP:ArrayCollection = new ArrayCollection([{id:1,fName:
"Lucky", lName:"Luke"}, {id:2, fName:
"Bart", lName:"Simpson"}]);
private function getFullName(item:Object):String{
return item.fName + " " + item.lName;
}
]]>
</mx:Script>
</mx:Application>