【问题标题】:How to dynamically change background colour of datagrid row?如何动态更改数据网格行的背景颜色?
【发布时间】:2011-01-24 15:39:34
【问题描述】:

似乎有各种黑客可以改变数据网格行的背景颜色,但所有这些似乎都是在渲染时发生的。

见:Setting background color for datagrid row in Adobe Flex

我有一个数据网格,我需要根据绑定的 ArrayCollection 的更改频繁地将行颜色更改为红色,然后再恢复正常。所以我正在寻找一种动态更改行颜色的方法。

有人可以帮忙吗?显然,由于更改频繁发生,如果更改行的背景颜色不是一个昂贵的过程,那就太好了,但乞丐不能选择。

【问题讨论】:

  • houser2112 的答案有效,但最好的办法是使用 itemRenderer(类似于 houser 编写的类),但要​​在数据设置器上更改该类的显示属性。

标签: apache-flex datagrid colors row


【解决方案1】:

您必须编写一个自定义组件,我将包含我们项目中经过清理的代码。在 ActionScript 中的某处,您需要为每一列编写以下内容:

column.itemRenderer = new ClassFactory(CellRenderer);

这是自定义类:

public class CellRenderer extends Label {
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { 
        super.updateDisplayList(unscaledWidth, unscaledHeight); 
        var g:Graphics = graphics;
        g.clear();
        for each(var object:Object in arrayCollection) {
            if (object.rowIndex == 0) { //or whatever your conditions are
                g.beginFill(0xFFFFC0); 
                g.drawRect(0, 0, unscaledWidth, unscaledHeight);
                g.endFill(); 
            }
        } 
    } 
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    相关资源
    最近更新 更多