动态AX - 以不同颜色着色多个网格单元

时间:2013-01-17 16:13:26

标签: colors grid axapta x++ dynamics-ax-2012

在Dynamics AX 2012中,有没有办法将多个单元格的背景颜色更改为不同的颜色?

Order Status     Ship Status     Order ID
[green]          [red]           SO-1234
[green]          [green]         SO-1235
[red]            [red]           SO-1236

我编写了一个可以改变一个单元格颜色的displayOption覆盖,但它似乎在最后应用了所有更改,因此无论您指定的最后一种颜色是应用于所有单元格的颜色。

_options.backColor(46080); //green
_options.affectedElementsByControl(OrderStatus.id());

//is there anyway to apply the first change, so I can make a second one?

_options.backColor(255); //red
_options.affectedElementsByControl(ShipStatus.id());

在上面列出的代码中,两个单元格背景颜色都是红色。

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:1)

我有一个类似的任务要完成,我没有找到一种方法在Ax中做到(好吧,技术上你可以尝试Table控制,但我强烈建议你不要这样做 - 你最终会大声宣誓)。

我所做的是实现了WPF用户控件并使用了this post as a template。 这是一个小教程(在答案#7中找到),它展示了如何在内置WPF数据网格控件中实现单元格后台转换器,以完成任务。

实现它之后,您可以使用LINQ(如果使用AX 2012 R2),Web服务或传递临时表来填充数据网格 - 有许多方法可以访问AX数据。

它可能不是最终的解决方案,但它确实有效。

答案 1 :(得分:0)

我使用表格控件(尽管Maciej建议你不要这样做)。 没有问题

您需要添加table控件来获取数据并设置属性 ColorSchemeRGB

然后,覆盖FormControl editControl(int column, int row) 您可以按value = data.cell(column, row).data();访问每个值,其中data是表格控件的名称。 请注意,您必须将具有正确数据类型的控件添加到表控件并为其命名。同时将ColorScheme属性设置为RGB

如果您获得所需背景颜色的RGB值,可以通过

设置此颜色
RealEdit.backgroundColor(WinAPI::RGB2int(real2int(R),real2int(G),real2int(B)));

RealEdit是添加的控件的名称。

我这样做是为了显示一个填充0到1之间值的矩阵,并显示颜色渐变叠加,范围从绿色到红色。如果您想了解有关颜色转换的更多信息,请参阅this link