Axapta:ユーザーが検索でフォームクエリを変更できないようにする
質問
ユーザーがProdRouteデータソースからOprIdを選択できるカスタムルックアップフォームをAxapta 3.0で作成しました。ルックアップを表示する前に、ProdIdが設定されており、ユーザーが変更することはできません。ユーザーは、有効なProdIdを持つ製造オーダのProdRouteからのみOprIdを選択できます。ドキュメントによると、範囲をロックすることにより、ユーザーがクエリを変更するのを防ぐことができます。私はこのようにしました:
qbrProdId.value(queryValue(_prodId));
qbrProdId.status(RangeStatus::Locked);
ここで、qbrProdIdは QueryBuildRange 型の変数であり、_prodIdは ProdId を指定します。
ルックアップが表示され、ユーザーがフィルターを変更しようとすると、ProdIdがロックされます。良い。ただし、ユーザーがルックアップのProdIdフィールドでCtrl + Fを押すか、ユーザーがツールバーの[検索]をクリックすると、別のProdIdを入力できます。
これを防ぐにはどうすればよいですか
ルックアップのグリッドのProdIdフィールドを「表示」タイプに変更することを考えました。データソースフィールドの代わりに。しかし、これに対するより良い解決策はありませんか?
(ところで、クエリは自動的には作成されませんが、フォームデータソースの" init"メソッドで手動で作成されます。)
解決
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;
}
他のヒント
範囲の代わりにダイナリンクを使用するだけです。
HTH
所属していません StackOverflow