API:
mx.controls.dataGridClasses.DataGridColumn.labelFunction(value:Function):void
-
确定此列中显示文本的函数。默认情况下,列显示与列名称匹配的数据字段的文本。不过,有时您希望显示基于多个数据字段的文本,或显示不具备自己想要格式的文本。在这种情况下,可使用
labelFunction
指定一个回调函数。
对于 DataGrid 控件,方法签名具有以下格式:
labelFunction(item:Object, column:DataGridColumn):String
其中,item
包含 DataGrid 项目对象,并且 column
指定 DataGrid 列。
回调函数可能会连接数据中的 firstName 和 lastName 字段,或者对 Date 设置某些自定义格式,也可能将月的数字形式转换为字符串形式。
此属性可用作数据绑定的源代码。
-
语言版本:
- 3.0 Player 版本:
- Flash 9, AIR 1.1 产品版本:
- Flex 3
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init(event)" width="100%" height="100%"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.events.FlexEvent; [Bindable] private var arr:ArrayCollection=new ArrayCollection(); protected function init(event:FlexEvent):void { for(var i:Number=1;i<6;i++){ var obj:Object=new Object(); obj.name="小"+i; obj.age=20+i; obj.sex=i%2==1?1:2; arr.addItem(obj); } } private function dataGridRowNum(item:Object, column:int):String { var index:int=this.dg.dataProvider.getItemIndex(item) + 1; return String(index); } private function labelFunction(item:Object,column:DataGridColumn):String { var s:String=item[column.dataField]; switch (column.dataField) { case "sex": if(s=="1"){ s="男"; }else if(s=="2"){ s="女"; }else{ s="未知"; } break; } return s; } ]]> </mx:Script> <mx:DataGrid width="100%" height="100%" id="dg" dataProvider="{arr}"> <mx:columns> <mx:DataGridColumn headerText="行号" labelFunction="dataGridRowNum"/> <mx:DataGridColumn headerText="姓名" dataField="name"/> <mx:DataGridColumn headerText="年龄" dataField="age"/> <mx:DataGridColumn headerText="性别1" dataField="sex"/> <mx:DataGridColumn headerText="性别2" dataField="sex" labelFunction="labelFunction"/> </mx:columns> </mx:DataGrid> </mx:Application>
转载于:https://blog.51cto.com/programmer/1298070