如何在运行时隐藏组合框上的枚举值?

时间:2011-09-16 07:24:58

标签: combobox axapta x++

假设组合框与枚举“ABC”相关联。其中的元素是A,B C和D.

现在我需要在组合框中只获得A和C而不是B和D?

这可能吗?

3 个答案:

答案 0 :(得分:2)

无法删除枚举值或组合框值。

您可以复制枚举,然后删除元素或更改顺序(但不是枚举值)。保持两种枚举类型与未来变化同步是您的责任。

要将枚举分配给另一个不兼容的枚举,只需向其添加零!

abc = myAbc + 0;

或者您可以使用编程更新组合框(使用组合框而不指定枚举类型):

YourComboBox.add("A");
YourComboBox.add("C");

另请参阅Enum as a Parameter in Dynamics AX有关向组合框添加新值的信息。

虽然无法在运行时删除枚举值,但可以隐藏整个应用程序的枚举值。只需将枚举值的ConfiguratioKey更改为“SysDeletedObjects40”,它就会作为合法值消失。我将假设此配置密钥未启用!

答案 1 :(得分:0)

我将两者结合使用!执行combobox.add,但从枚举中派生值,并排除您不想要的值。这将允许您遍历枚举,并将其与一些代码相结合,您应该设置:

static void Job23(Args _args)
{
    SysDictEnum sysDictEnum;
    int i;
    ;

    sysDictEnum = new SysDictEnum(EnumNum(SalesStatus));

    for (i=0; i<sysDictEnum.values(); i++)
    {
        info(strfmt("%1", sysDictEnum.index2Label(i)));
    }
}

答案 2 :(得分:0)

轻松,在您的表单中创建一个运行方法,并将其放入:

public void run()
{
    super();

    YourCombo.delete(enum2str(YourEnum::B));
    YourCombo.delete(enum2str(YourEnum::D));
}

致谢

相关问题