1

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

我需要根据条件以编程方式为数据网格的单元格着色。比方说,股票报价。如果比前一天增加,我需要在减少时将单元格涂成绿色和红色。

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

我知道我必须使用渲染器。但不确定,如何将它用于单元格,并且过于动态。谁能解释一下如何去做?

谢谢

4

1 回答 1

3

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

在 Adob​​e Flex 中设置数据网格行的背景颜色

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

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

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

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

于 2009-04-21T23:51:25.260 回答