【问题标题】:Display enum value based on field value根据字段值显示枚举值
【发布时间】:2016-09-28 02:10:40
【问题描述】:

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

例如:

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

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

我想我可以通过 switch case 场景来实现这一点。
我怎样才能最好地进行设置?

【问题讨论】:

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


    【解决方案1】:

    当然,您可以使用 switch / case 来实现,但如果您处理一系列值和一组有限的结果值(您的枚举元素),那么简单的 if / else if 就是可能更适合

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

    int x;
    ;
    
    x = yourTable.YourField;
    if (x >= 1 && x <= 15)
    {
        return YourEnum::1to15;
    }
    else if (x >= 16 && x <= 20)
    {
        return YourEnum::16to20;
    }
    // other possible ranges
    else
    {
        throw YourEnum::Unknown;
    }
    

    【讨论】:

      【解决方案2】:

      是的,通过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
      }
      

      【讨论】:

        【解决方案3】:

        我个人喜欢用整数除法变聪明的想法。

        如果您的范围将是 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));
        }
        

        【讨论】:

          猜你喜欢
          • 2021-11-11
          • 1970-01-01
          • 1970-01-01
          • 2019-08-19
          • 2023-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多