102241314.png

API:spacer.gif
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>