我已成功在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)\类\ DictEnum \标签 (C)\形式\ SysLookup \方法\运行 (C)\类\ FormStringControl \ performFormLookup (C)\ Classes \ SysLookup \ lookupList - 第16行 (C)\类\ FormStringControl \查找
我愿意接受有关如何解决当前问题或如何在RU7中创建相同效果的建议(无需引入前RU7 syslookup类,它确实有效,但是不可接受。)
答案 0 :(得分: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
我不知道您的标签"@ABC369"
的价值,但在标准AX中,只有当此标签包含一些基本枚举的ID(例如{{1}的“732”)时才会出现错误})。您也可以检查它,但您的列表不会显示在查找中。您最好检查在您成功使用您提供的代码段的环境中如何自定义NoYesCombo
表单。