更改网格中列的背景颜色

时间:2012-09-27 12:45:42

标签: axapta dynamics-ax-2009 dynamics-ax-2012

我有以下表格,我想根据其他列的值更改列的背景颜色; enter image description here

在橙色列中,我希望单元格颜色为红色,绿色和蓝色的RGB组合,而不是显示橙色背景。 COLOR ATTRIBUTES部分下的蓝色字段。

1 个答案:

答案 0 :(得分:6)

假设您需要更改背景的控件名为FirstFieldControl。将其AutoDeclaration属性设置为Yes,将BackgroundColor设置为Window background

现在您需要覆盖数据源上的displayOption方法,例如:

public void displayOption(Common _record, FormRowDisplayOption _options)
{
    YourTable   yourTable   = _record;
    int         color;
    ;

    switch (yourTable.Name)
    {
         case 'Red' :
                 color = WINAPI::rgbCon2int([255, 0, 0]);
                 break;
         case 'Green' :
                 color = WINAPI::rgbCon2int([0, 255, 0]);
                 break;
         case 'Blue' :
                 color = WINAPI::rgbCon2int([0, 0, 255]);
                 break;
    }

    if (color)
    {
        _options.backColor(color);
        _options.affectedElementsByControl(FirstFieldControl.id());
    }
    else
    {
        super(_record, _options);
    }
}

这只是一个给你一个想法的例子 - 不要复制粘贴:)

将颜色值存储在表格中会更容易,然后代码会更好。

P.S。如果您要更改颜色运行时间,则可能需要使用以下代码来刷新记录:

yourTable_ds.clearDisplayOption(yourTable);
yourTable_ds.refresh();