1

ユーザーがProdRouteデータソースからOprIdを選択できるカスタムルックアップフォームをAxapta3.0で作成しました。ルックアップを表示する前に、ProdIdが設定されており、ユーザーが変更することはできません。ユーザーは、有効なProdIdを持つ製造指図のProdRouteからのみOprIdを選択できます。ドキュメントによると、範囲をロックすることで、ユーザーがクエリを変更できないようにすることができます。私はこのようにしました:

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

ここで、qbrProdIdはQueryBuildRange型の変数であり、_prodIdはProdId指定します。

ルックアップが表示され、ユーザーがフィルターを変更しようとすると、ProdIdがロックされます。良い。ただし、ユーザーがルックアップのProdIdフィールドでCtrl + Fを押した場合、またはユーザーがツールバーの[検索]をクリックした場合は、別のProdIdを入力できます。

どうすればこれを防ぐことができますか?

ルックアップのグリッドのProdIdフィールドを、データソースフィールドではなく「表示」タイプに変更することを考えました。しかし、これに対するより良い解決策はありませんか?

(ちなみに、クエリは自動的に作成されるのではなく、フォームデータソースの「init」メソッドで手動で作成されます)。

4

2 に答える 2

1

OK、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;
}
于 2009-11-02T22:05:15.813 に答える
0

範囲の代わりにダイナリンクを使用するだけです。

HTH

于 2009-10-27T21:08:57.290 に答える