Axapta RunBaseReport中的dialogPostRun方法

Axapta RunBaseReport中的dialogPostRun方法,axapta,x++,dynamics-ax-2009,Axapta,X++,Dynamics Ax 2009,我有一个RunBaseReport,其中包含覆盖的对话框方法,我在其中添加了两个控件。其中一个控件是组合框。 修改combobox时,应更改Controls enabled()属性 因此,基本上我需要知道我的dfReportType对话框字段的值何时更改 public Object dialog(Object dialog) { DialogRunbase dialog = dialog; ; //adding my combobox dfReportTy

我有一个RunBaseReport,其中包含覆盖的对话框方法,我在其中添加了两个控件。其中一个控件是组合框。 修改combobox时,应更改Controls enabled()属性

因此,基本上我需要知道我的dfReportType对话框字段的值何时更改

public Object dialog(Object dialog)
{
     DialogRunbase dialog = dialog;
     ;
     //adding my combobox
     dfReportType = dialog.addFieldValue(typeid(ReportType), ReportType:DefaultType);
     //adding some other controls here
     return dialog; 
}
根据我发现的许多文章,我需要重写dialogPostRun方法并执行如下操作:

public void dialogPostRun(DialogRunbase dialog)
{
    super(dialog);
    dialog.dialogForm().formRun().controlMethodOverload(true);
    dialog.dialogForm().formRun().controlMethodOverloadObject(this);
}
但不幸的是,我在RunBaseReport类中没有这个方法。 这应该是有根据的


还有其他解决办法吗

我目前使用的是AX 2012,但我仍在关注它。我在上下文菜单中有可用的方法,但在第一列中没有。我必须通过“Plus…”找到第二列中的方法。

嗯,Report对象中没有继承RunBaseReport的对话框PostRun方法,但是我们在继承RunBaseReport的类中有这个方法

所以那是我的错误。我使用报表对象而不是类

如果要为报告创建自定义对话框,但也要使用所有默认控件,则应:

  • 创建类
  • 继承RunBaseReport
  • 覆盖对话框、getFromDialog等
  • 重写lastValueElementName方法

    public identifiername lastValueElementName()
    {
        //just put name of your report object
        return reportStr(YourReportName);
    }
    

如果要从menuItem调用,请不要忘记添加main()方法。

不幸的是,我在AX 2009中没有“加号”。我已切换到EN-US。然后,在“Override method”的底部,有一个带有箭头的“More…”选项,它将打开下一列。我想我还不够清楚。我试图在inhertis RunBaseReport类的报告中重写它,但这是一个错误,我不得不使用类对象。不过还是要谢谢你。