X++ 对话框字段查找覆盖错误 DialogControl.Control 无法从服务器调用

X++ Dialog Field Lookup Override Error DialogControl.Control Cannot be Called From Server

首先,下面显示的代码是从我们的 AX 中提取的,WORKS。创建对话框的 class 和包含查找的 class 在“调用自”上都设置为 运行。对话方法所在的 class 是一个抽象 class。这会导致这个错误吗?父 class 也不扩展 RunBase。不确定这是否有所作为。

我收到此错误消息,“无法从服务器调用方法 DialogControl.control;请改用 DialogField class 上的方法”,当我尝试向对话框字段添加查找覆盖时.

如有任何帮助或解决方法,我们将不胜感激。

protected boolean dialog()
{
    Dialog  dialog = new Dialog("My Dialog", this);
    DialogField myField;
    boolean ok;

    myField = dialog.addFieldValue(extendedTypeStr(MyStringType),
        "DefaultValue", "FieldCaption", "FieldHelp");
    myField.registerOverrideMethod(
        methodStr(FormStringControl, lookup),
        methodStr(MyClassName, MyLookupMethod),
        new MyClassName());
    ok = dialog.run();
}

private void MyLookupMethod(FormStringControl _control)
{
    SysTableLookup          sysTableLookup;
    QueryBuildDataSource    queryBuildDataSource;
    Query                   query = new Query();

    queryBuildDataSource = query.addDataSource(tablenum(CustTable));

    sysTableLookup = SysTableLookup::newParameters(tablenum(CustTable), _control);
    sysTableLookup.addLookupfield(fieldnum(CustTable, AccountNum),  true);
    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}

好的,我终于找到了。以为我会 post 帮助别人的答案。

虽然 class 设置为“调用自”,调用它的操作菜单项也是如此,但它正在使用构造方法重新实例化自身。静态 Construct 方法被设置为服务器方法。