根据字段值显示枚举值

时间:2016-09-27 13:04:52

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

我想根据字段值返回枚举值。

例如:

如果Free value field的值为'15',我想返回枚举值“1”,因为枚举值1的标签是:'10 -20',因为15在10的范围内-20我想要返回那个值。

我想为此创建一个显示方法。

我想我可以通过switch case场景完成此任务 我怎样才能最好地设置它?

3 个答案:

答案 0 :(得分:3)

当然你可以使用switch / case来做,但是如果你处理一系列值和一组有限的结果值(你的枚举元素),那么一个简单的{{1} } / if可能更适合

所以不要在你的案例分支中说明每个可能的值(1,2,3,4 bla bla),而不是这样做

else if

答案 1 :(得分:1)

是的,用switch语句就可以做到。

试试这个:

int value;

;

switch (value)
{       
    case 1, 2, 3, 4 ,5:
        //Your code
        break;

    case 10, 11, 12, 13, 14, 15, 16, 17, 18 ,19, 20 :
        //Your code
        break;                    

    default :            
        //Your code
}

答案 2 :(得分:1)

我个人喜欢通过整数除法获得聪明的想法。

如果你的范围是10的组,那么你可以除以10来得到枚举值。

请看下面的代码和截图:

static void Job1(Args _args)
{
    int         i;
    MyEnum      value;

    // Test #1
    i       = 15;           // Your number
    value   = (i/10);       // Enum result
    info(strFmt("Test #1: %1", value));

    // Test #2
    i       = 5;           // Your number
    value   = (i/10);       // Enum result
    info(strFmt("Test #2: %1", value));

    // Test #3
    i       = 22;           // Your number
    value   = (i/10);       // Enum result
    info(strFmt("Test #3: %1", value));
}

enter image description here