Flex Hack 01: labelFunction的使用
2009-09-23 00:00:00 来源:WEB开发网写过Swing的人都知道,如果使用List的组件或包含List组件如JComboBox,他们的item需要显示几个字段的时候,需要做额外的动作,比如
在List需要显示的对象添加一个toString方法便能组合显示出想要的效果,但是有时候一个POJO或VO又不允许你添加这么一个方法。这个时候就需要在Renderer中利用反射的机制能解决所需要的方法。
但是在Flex中就能很方便的解决这样的问题,对于显示一个字段,只需要指定对应字段属性给labelField即可,当需要上述所需要的功能的时候就得做个转换了,在Flex的基于List的组件都有一个labelFunction方法能很简单指定所需要显示的内容。
如有这么一个例子,有一个对象他包含一个name和age,现在需要一个ComboBox显示为:“name,age”,下面看例子代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="init()" backgroundColor="white">
<mx:Script>
<![CDATA[
[Bindable]
private var cbxDataProvider:Array;
private function init():void
{
cbxDataProvider = [
{name:"kissjava", age:"100"},
{name:"rocky", age:"88"},
{name:"jiang", age:"99"}
];
}
private function cbxDisplayFunction(data:Object):String
{
var label:String = "";
if(data.hasOwnProperty("name")){
label += data.name + ",";
}
if(data.hasOwnProperty("age")){
label += data.age;
}
return label;
}
]]>
</mx:Script>
<mx:Text id="text" x="30" y="30" text="这是labelFunction的测试例子"/>
<mx:ComboBox id="cbx" labelFunction="cbxDisplayFunction"
dataProvider="{cbxDataProvider}" x="30" y="60"/>
</mx:Application>
测试结果图为:
这个labelFunction方法也可用于DataGrid中,如果有时候需要国际化之类的需求的时候,labelFunction也还是能派上用处的。
Tags:Flex Hack labelFunction
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接