格式化AdvancedDataGrid单元格

时间:2009-04-21 19:28:26

标签: flex rendering advanceddatagrid

我有一个关于渲染高级数据网格细胞的快速问题。

我需要根据条件以编程方式为数据网格的单元格着色。可以说,股票报价。如果从前一天开始增加,我需要将单元格设为绿色和红色,当有减少时。

现在,重要的部分是,我需要动态地做这些事情,这意味着,当用户启用比较/条件时,单元格会被着色。当用户禁用比较时,它再次返回其默认行为。

我知道我必须使用渲染器。但不确定,如何将它用于细胞和太动态。任何人都可以解释一下如何去做吗?

谢谢

1 个答案:

答案 0 :(得分:3)

项呈示器是用于定义组件的“项”或子组件的外观的组件。在ADG的情况下,“项目”是单个单元格。您可以创建一个完全自定义的类来充当渲染器(假设它实现了某些必需的接口),或者在大多数情况下,您可以扩展现有组件。由于ADG单元格的默认渲染器不支持背景颜色,因此您必须创建或扩展一个组件,并将其用作渲染器。这是在以下问题中链接的这些教程的基本前提:

Setting background color for datagrid row in Adobe Flex

创建支持背景颜色的itemRenderer后,您可以选择两个选项来定义“条件”;在itemRenderer内部或使用ADG的styleFunction(另外要求itemRenderer定义“背景”样式)。

在您的情况下,您可以在发送到每个单元格的数据中包含今天和昨天的股票价格值,并比较两者以确定用于绘制背景的颜色。同样,在上面提供的教程链接中有更多内容。在itemRenderer或styleFunction中,您将比较itemRenderer的/ styleFunction的数据对象(对应于您正在查看的行)的属性,例如:

if(data.today > data.yesterday)
{
    // set color or return style
}
else ...

要“切换”自定义单元格颜色,请在自定义渲染器和默认(无色)渲染器之间切换。换句话说,当您需要显示颜色时,将itemRenderer属性设置为自定义itemRenderer类,并在需要“默认行为”时将其设置为“null”。