flex 对datagrid列表添加图片文本 itemRender

创建一个主应用程序,采用动态赋值给datagrid

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
               creationComplete="init(event)" >
    <fx:Declarations>
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
        <mx:HTTPService id="dataXmlService" resultFormat="xml" result="dataXmlToData(event)"/>
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.FlexEvent;
            import mx.rpc.events.ResultEvent;

            import Factory.StatusFactory;
            private var itemRenderImg :IFactory = new StatusFactory();//实例化一个itemrenderer
            private var dataXml: XML;

            protected function init(event:FlexEvent):void
            {
                // TODO Auto-generated method stub
                dataXmlService.url="students.xml";//请求地址
                try
                {
                    dataXmlService.send();
                } 
                catch(error:Error) 
                {
                    Alert.show("请求出错");
                }

            }

            protected function dataXmlToData(event:ResultEvent):void
            {
                // TODO Auto-generated method stub
                dataXml=XML(event.result);//请求的数据结果

                grid.dataProvider = dataXml.children();
                column.itemRenderer = itemRenderImg;//将itemrender赋给序号所在的列
            }

        ]]>
    </fx:Script>


    <mx:DataGrid id="grid" width="500" height="400" textAlign="center">
        <mx:columns>
            <mx:DataGridColumn headerText="序号" dataField="col1" textAlign="left" id="column"/>
            <mx:DataGridColumn headerText="姓名" dataField="@col2"/>  
            <mx:DataGridColumn headerText="年龄" dataField="@col3"/>  
            <mx:DataGridColumn headerText="爱好" dataField="@col4"/>  
            <mx:DataGridColumn headerText="住址" dataField="@col5"/>  
        </mx:columns>  
    </mx:DataGrid>
</s:Application>

statusFactory.as

package Factory
{
    import mx.core.IFactory;

    public class StatusFactory implements IFactory
    {
        public function StatusFactory()
        {
            super();
        }


        public function newInstance():*{
            //实例化渲染器,实现具体功能
            return new statusItemRender;//返回一个itemrender实例
        }
    }
}

statusItemRender

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx">
    <fx:Declarations>
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            [Embed(source="assets/1.jpg")]
            private static const you : Class;

            [Embed(source="assets/2.jpg")]
            private static const liang:Class;

            [Embed(source="assets/3.jpg")]
            private static const cha : Class;

            [Embed(source="assets/4.jpg")]
            private static const hao : Class;

            private function getImage(data : Object):Object{
                if(data==null) return null;
                if("2101"==data.@col1){return you;}
                if("2102"==data.@col2){return liang;}
                if("2103"==data.@col3){return cha;}
                return hao;
            }

            private function getText(data:Object):String{
                if(data==null) return null;
                if("2101"==data.@col1){return "优秀";}
                if("2102"==data.@col2){return "良好";}
                if("2103"==data.@col3){return "差劲";}
                return "好";
            }
        ]]>
    </fx:Script>
    <s:Label id="serial" text="{this.data.@col1}"/>
    <s:Image id="stateImg" source="{getImage(this.data)}" width="20" height="20"/>
    <s:Label id="stateText" text="{getText(this.data)}"/>
</mx:HBox>

运行结果
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人圭先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值