Как скрыть значения перечисления в поле со списком во время выполнения? - PullRequest
2 голосов
/ 16 сентября 2011

Предположим, что поле со списком связано с перечислением "ABC".Элементы в нем - A, BC и D.

Теперь мне нужно получить только A и C в выпадающем списке, а не B и D?

Возможно ли это?

Ответы [ 3 ]

2 голосов
/ 16 сентября 2011

Невозможно удалить значения перечисления или значения комбинированного списка.

Вы можете дублировать перечисление, затем удалять элементы или изменять порядок (но не значение перечисления).Ответственность за синхронизацию обоих типов перечислений с будущими изменениями несет ваша ответственность.

Чтобы назначить перечисление другому несовместимому перечислению, просто добавьте к нему ноль!

abc = myAbc + 0;

Или вы можете обновить свойкомбинированный список с использованием программирования (используя комбинированный список без указания типа перечисления):

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

См. также Перечисление в качестве параметра в Dynamics AX о добавлении новых значений в комбинированный список.

Хотя невозможно удалить значения перечисления во время выполнения, можно скрыть значения перечисления для всего приложения.Просто измените значение перечисления ConfiguratioKey на «SysDeletedObjects40», и оно исчезнет как допустимое значение.Я буду считать, что этот ключ конфигурации не включен!

0 голосов
/ 23 августа 2018

Легко, создайте метод запуска в вашей форме и поместите это:

public void run()
{
    super();

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

Привет

0 голосов
/ 26 октября 2011

Я бы использовал комбинацию обоих!Сделайте combobox.add, но извлеките значения из enum и исключите те, которые вам не нужны.Это позволит вам перебирать перечисление и комбинировать его с небольшим кодом, и вы должны установить:

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)));
    }
}
...