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

I don't know the value of your label "@ABC369", but in standard AX you won't have an error only if it this label holds some base enum's ID (e.g. "732" for NoYesCombo). You can also check it, however your List won't be displayed in the lookup. You'd better check how the SysLookup form had been customized in the environment where you've been successfully using the code snippet you provided.

于 2012-10-14T22:45:30.610 回答