【转载】
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>
在dataGrid中,稍有不一样,参数(item:Object, column:DataGridColumn)是必须的,如果有多列,item.xxx代表那一列,dataField的属性也是需要的。返回值是String。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
<![CDATA[
[Bindable]
public var myDataProvider:Array = [ 125000000.99,
1700000000.01,
984561321483.56,
0.99,
5.75,
31400000000.01];
public function myLabelFunction(item:Object, column:DataGridColumn):String
{
var amount:String = item.toString(); //若有多列,这里需要item.xxx
var dollars:String = amount.split(".")[0];
var dollarDigitCount:Number = dollars.toString().length;
var value:String;
if (dollarDigitCount >= 7 && dollarDigitCount <= 9)
{
value = dollars.slice(0, -6) + " Million";
}
else if (dollarDigitCount >= 10 && dollarDigitCount <= 12)
{
value = dollars.slice(0, -9) + " Billion";
}
else if (dollarDigitCount >= 13)
{
value = dollars.slice(0, -12) + " Trillion";
}
else
{
value = item.toString();
}
return "$" + value;
}
]]>
</mx:Script>
<mx:DataGrid id="dg" dataProvider="{myDataProvider}" >
<mx:columns>
<mx:DataGridColumn headerText="Click To Sort" labelFunction="myLabelFunction"/>
<!-- 这里没有dataField是因为只有一列 -->
</mx:columns>
</mx:DataGrid>
<mx:TextInput id="textInput" text="{dg.selectedItem}"/>
</mx:Application>
http://liguoliang.com/2009/01/668/
http://www.cnblogs.com/xxcainiao/archive/2008/05/11/1192464.html
分享到:
相关推荐
在Flex Builder调试中创建和监视表达式 25.7节. 在Flex Builder中安装Ant窗口 25.8节. 为自动通用任务创建一个Ant构建文件 25.9节. 使用mxmlc和Ant编译Flex应用程序 25.10节. 使用ASDoc和Ant生成文档 25.11节. 使用...
如果仅仅只是简单的显示数据,或者对显示数据做一些格式化操作,基本的DataGrid,加labelFunction支持就可以满足了,但大多我们需要针对不同的数据和对象,进行不同的渲染,比如checkbox啦,下拉选择框,日期等等,...
一个非常不错的flex时间控件 ()}" labelFunction="selectDateTime" width="150"/> public function selectDateTime(item:Date):String { return item.fullYear + "-" + item.month + "-" + item.dateUTC + ...
管理员可以利用本功能,在线比较Web空间中的网站ASP文件和60度官方发布的相应版本中原始ASP文件,方便Web空间文件管理。3、修复当移动文章时不能自动删除相应的html文件问题4、修复新添加文章时显示空页问题5、修复...
<base:HDateField id="flt_date" width="70" tabIndex="7" editable="true" labelFunction="formatDate" restrict="[A-Z,0-9]" text="{this.formatDate(new Date)}" validator="{fltDateValidator}" /> ...