Axapta: запретить пользователю изменять форму запроса - PullRequest
2 голосов
/ 23 октября 2009

Я создал пользовательскую форму поиска в Axapta 3.0, в которой пользователь может выбрать OprId из источника данных ProdRoute. Перед отображением поиска ProdId устанавливается и не может быть изменен пользователем. Пользователь может выбрать только OprId из ProdRoute производственного заказа с действительным ProdId. Согласно документации, пользователь может предотвратить изменение запроса, заблокировав диапазон. Я сделал это так:

qbrProdId.value(queryValue(_prodId));
qbrProdId.status(RangeStatus::Locked);

Здесь qbrProdId - это переменная типа QueryBuildRange , а _prodId указывает ProdId .

Когда отображается поиск и пользователь пытается изменить фильтр, ProdId заблокирован. Хорошо. Однако когда пользователь нажимает Ctrl + F в поле поиска ProdId или если пользователь нажимает кнопку «Поиск» на панели инструментов, можно ввести другой идентификатор ProdId.

Как я могу предотвратить это?

Я думал об изменении поля ProdId в сетке поиска, чтобы оно имело тип «Отображение» вместо того, чтобы быть полем источника данных. Но разве нет лучшего решения для этого?

(Кстати, запрос не создается автоматически, а создается вручную в методе «init» источника данных формы).

Ответы [ 2 ]

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

ОК, вы можете просто переопределить метод task (). Это должно отключить функцию фильтра в форме поиска.

public int task(int _taskId)
{
    int ret;

    switch(_taskId)
    {
        case 2855:
        case 2844:
        case 2837:
        case 799:
            return 0;
    }

    ret = super(_taskId);

    return ret;
}
0 голосов
/ 28 октября 2009

Просто используйте dynalink вместо диапазона.

НТН

...