actionscript-3 – 根据Flex中的多个条件更改数据网格单元格的背
发布时间:2020-12-15 01:48:14 所属栏目:百科 来源:网络整理
导读:嗨,我是Adobe Flex的新手,如果我的问题听起来很愚蠢,请道歉.无论如何这里是. 我正在尝试简单的数据网格,它基本上检查了两个条件 1)如果艺术家是01并且专辑是’专辑01′,则在“年份”栏中将背景设置为相应的单元格. 使用我的下面的代码’设置样式’到背景颜色
嗨,我是Adobe Flex的新手,如果我的问题听起来很愚蠢,请道歉.无论如何这里是.
我正在尝试简单的数据网格,它基本上检查了两个条件 1)如果艺术家是01并且专辑是’专辑01′,则在“年份”栏中将背景设置为相应的单元格. 使用我的下面的代码’设置样式’到背景颜色,因为属性不起作用但更改字体颜色正在工作,其次我不知道如何编写代码以使上述嵌套条件工作?如果有人能在这方面帮助我,我将非常感激. 以下是代码: <?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" > <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; [Bindable] public static var initDG:ArrayCollection = new ArrayCollection([ {Artist:'01',Album:'Album 01',Year:'2008'},{Artist:'01',Album:'Album 02',Year:'2009'},{Artist:'03',Album:'Album 03',Year:'2007'},Album:'Album 04',Year:'2003'},]); ]]> </fx:Script> <s:VGroup> <s:DataGrid id="myGrid" width="360" dataProvider="{initDG}"> <s:columns> <s:ArrayList> <s:GridColumn dataField="Artist" headerText="Artist" itemRenderer="CellRenderer"/> <s:GridColumn dataField="Album" headerText="Album" itemRenderer="CellRenderer"/> <s:GridColumn dataField="Year" headerText="Year" itemRenderer="CellRenderer"/> </s:ArrayList> </s:columns> </s:DataGrid> </s:VGroup> </s:Application> 渲染: <?xml version="1.0" encoding="utf-8"?> <s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" implements="mx.controls.listClasses.IDropInListItemRenderer"> <fx:Script> <![CDATA[ import mx.controls.dataGridClasses.DataGridListData; import mx.controls.listClasses.BaseListData; import mx.controls.Alert; private var _listData:BaseListData; [Bindable]private var isSelected:Boolean = false; override public function set data( value:Object ) : void { super.data = value; lblData.text = data[column.dataField]; if (data[column.dataField].valueOf() >= 2008){ //styleName="myStyles.BgColor"; setStyle('backgroundColor',0xFFFF00); }else{ setStyle('backgroundColor',0x32CD32); } } [Bindable]public function get listData() : BaseListData { return _listData; } public function set listData( value:BaseListData ) : void { _listData = value; } ]]> </fx:Script> <s:Label id="lblData" top="9" left="7" width="100%" height="100%" textAlign="center"/> </s:GridItemRenderer> 我想要的输出:条件:如果Artist = 01且Year> = 2008,那么单元格背景将变为红色 解决方法
GridItemRenderer类没有这样的样式backgroundColor.
所以设置它没有任何效果. 你可以做的是在ItemRenderer中添加一个Rect,并根据你的条件设置它的颜色属性. 一个例子是这样的: <?xml version="1.0" encoding="utf-8"?> <s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true"> <fx:Script> <![CDATA[ override public function prepare(hasBeenRecycled:Boolean):void { if(this.data) { if(this.data.Year >= 2008 && this.data.Artist == '01' && column.dataField == 'Year') bgColor.color = 0xFF0000; else bgColor.color = 0xFFFFFF; } } ]]> </fx:Script> <s:Rect top="0" bottom="0" left="0" right="0"> <s:fill> <s:SolidColor id="bgColor" color="0xFFFFFF"/> </s:fill> </s:Rect> <s:Label id="labelDisplay" top="9" left="7"/> </s:GridItemRenderer> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |