在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());
在上面列出的代码中,两个单元格背景颜色都是红色。
有什么建议吗?
由于
答案 0 :(得分:1)
我有一个类似的任务要完成,我没有找到一种方法在Ax中做到(好吧,技术上你可以尝试Table控制,但我强烈建议你不要这样做 - 你最终会大声宣誓)。
我所做的是实现了WPF用户控件并使用了this post as a template。 这是一个小教程(在答案#7中找到),它展示了如何在内置WPF数据网格控件中实现单元格后台转换器,以完成任务。
实现它之后,您可以使用LINQ(如果使用AX 2012 R2),Web服务或传递临时表来填充数据网格 - 有许多方法可以访问AX数据。
它可能不是最终的解决方案,但它确实有效。
答案 1 :(得分:0)
我使用表格控件(尽管Maciej建议你不要这样做)。 没有问题。
您需要添加table
控件来获取数据并设置属性
ColorScheme
至RGB
然后,覆盖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。