Axapta: поле поиска отображает строковое значение вместо идентификатора? - PullRequest
0 голосов
/ 11 ноября 2009

Когда AX генерирует формы и сетки, все поиски заполняются правильно, но идентификатор элемента поиска отображается в форме. Единственный способ увидеть значения, которые имеют смысл, это нажать на поле - не совсем идеально. Есть ли способ отобразить значение поиска в форме вместо идентификатора за ним?

Я бы хотел, чтобы форма tableB отображала значение tableA_value вместо tableA_id.

TABLEA

  • tableA_id (int - уникальный)
  • tableA_value (строка - неуникальная)

TableB

  • tableB_id (int - уникальный)
  • tableA_id (int - отношение к tableA)
  • tableB_datafields (разное)

Спасибо

1 Ответ

1 голос
/ 14 ноября 2009

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

Метод отображения в таблице A:

display [datatype] lookupName(tableA _tableA)
{
    ;
    return tableB::find(_tableA.[tableA id column]).[tableB string column];
}

Метод поиска в таблице B:

static tableB find([datatype] [lookup variable], boolean _forUpdate = false,
 ConcurrencyModel _concurrencyModel = ConcurrencyModel::Auto)
{
[TableB] [tableB];

if ([lookup variable])
{
    if (_forUpdate)
    {
        tableB.selectForUpdate(_forUpdate);
        if (_concurrencyModel != ConcurrencyModel::Auto)
        {
            tableB.concurrencyModel(_concurrencyModel);
        }
    }

    select firstonly tableB
        where tableB.[lookup column] == [lookup variable];
}
return tableB;

}

Добавлены таблицы A и B в качестве источников данных для формы.

Добавлено строковое поле в форму.

Установить таблицу A в качестве источника данных для поля и lookupName в качестве метода данных.

В поле поиска добавлен модифицированный метод, позволяющий обновить статическое поле:

element.redraw();

Надеюсь, это кому-нибудь поможет.

...