gpt4 book ai didi

actionscript-3 - 根据 Flex 中的多个条件更改数据网格单元格的背景颜色

转载 作者:行者123 更新时间:2023-12-04 17:51:43 25 4
gpt4 key购买 nike

嗨,我是 Adob​​e Flex 的新手,如果我的问题听起来很愚蠢,请道歉。无论如何,它在这里。
我正在尝试简单的数据网格,它基本上检查 2 个条件
1) 如果艺术家是 01 并且专辑是“专辑 01”,则将背景设置为“年份”列中的相应单元格。

使用我下面的代码将“设置样式”设置为背景颜色,因为属性不起作用但更改字体颜色有效,其次我不知道如何编写代码以使上述嵌套条件起作用?如果有人能在这方面帮助我,我将不胜感激。
谢谢!提前。

下面是代码:
新建数据网格.mxml

<?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'},
{Artist:'03', 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>

我的期望输出:条件:如果艺术家 = 01 且年份 >= 2008 则年份的单元格背景更改为红色

最佳答案

类 GridItemRenderer 没有这样的样式 backgroundColor。
所以设置它没有效果。

您可以做的是将 Rect 添加到 ItemRenderer 并根据您的条件设置其颜色属性。

一个例子是这样的:

<?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>

关于actionscript-3 - 根据 Flex 中的多个条件更改数据网格单元格的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14985504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com