0

私は AX2009 でカスタム ルックアップを何年も使用してきました。RU7 にアップグレードした後、以前の方法は機能しなくなったようです。それを修正するために何を変更する必要があるかについて何か提案はありますか?

カスタムルックアップを呼び出すために使用したコードは次のとおりです。

public void lookup()
{
List    valueList = new List(Types::String);
;
    //add the choices to the list
    valueList.addEnd('@ABC123');
    valueList.addEnd('@ABC246);
//display the list using the customized syslookup routine
SysLookup::lookupList(this, valueList, "@ABC369");
super();
}

sysLookup クラスに追加したメソッドは次のとおりです。

public static client void lookupList(FormStringControl _formStringControl, List _valueList, str _columnLabel = '')
{
Args    args;
FormRun formRun;
;
if (_formStringControl && _valueList && _valueList.typeId() == Types::String)
{
    args = new Args(formstr(SysLookup));
    args.parmObject(_valueList);
    args.parm(_columnLabel);
    formRun = classFactory.formRunClass(args);
    formRun.init();
    _formStringControl.performFormLookup(formRun);
}
}

RU7 をインストールするまで、これは完全に機能していました。ここで、次のエラーが表示されます。

コード実行エラー: DictEnum オブジェクトが初期化されていません。(C)\Classes\DictEnum\label (C)\Forms\SysLookup\Methods\run (C)\Classes\FormStringControl\performFormLookup (C)\Classes\SysLookup\lookupList - 16行目 (C)\Classes\FormStringControl\Lookup

現在の問題を修正する方法、または RU7 で同じ効果を作成する方法 (RU7 より前の syslookup クラスを導入せずに、機能しますが、受け入れられません) に関する提案をお待ちしています。

4

1 に答える 1

1

カスタム ルックアップを正常に使用できたのは、どのバージョンのアプリケーションでしょうか。RU-3 でも機能しません。SysLookupメソッドを使用できるようにフォームがカスタマイズされていると思いますlookupList。確認することをお勧めします。

標準の SysLookup フォームは args.parm() のみを使用し、args.parmObject() は使用しないため、_valueList はまったく使用されません。ルックアップフォームがどのように呼び出されるかを確認できます\Forms\KMQuestionnaireStatistics\Designs\Design\[Tab:Tab]\[TabPage:RangesTab]\[Group:Ranges]\StringEdit:rangeGender\Methods\lookup

label の値はわかりません"@ABC369"が、標準の AX では、このラベルが何らかの基本列挙型の ID (例: の「732」NoYesCombo) を保持している場合にのみ、エラーは発生しません。チェックすることもできますが、リストはルックアップに表示されません。提供されたコード スニペットを正常に使用している環境で、フォームがどのようにSysLookupカスタマイズされたかを確認することをお勧めします。

于 2012-10-14T22:45:30.610 に答える