AX2009 RU7自定义查找列表

时间:2012-10-12 19:07:26

标签: lookup axapta dynamics-ax-2009

我已成功在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类,它确实有效,但是不可接受。)

1 个答案:

答案 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表单。