-1

在 D365 中,我知道如何为 DataSource、DataField 和 Control 运行代码。但是如何为表单运行代码“运行”“初始化”?

如果我只是在表单级别下写“运行”和“初始化”。它会自动运行吗?或者,我需要一些方法来调用它们?如何为我的表单运行此“运行”?

在此处输入图像描述

4

3 回答 3

1

如果您是从头开始开发自定义表单,那么可以,正如@DAXaholic 指出的那样,您可以直接在表单上覆盖runinit方法,然后像在以前的 AX 版本中那样实现您的自定义逻辑。

但是,在 D365 中强烈建议不要使用叠加,并且 Microsoft 将不再支持。这意味着,如果您要自定义标准表单或不在同一个包中的任何其他表单,则必须使用可扩展性方法来实现自定义逻辑。这可以通过扩展事件处理程序来实现。

假设您有一个表单,并且您必须在表单初始化之前和之后执行一些代码。您可以创建一个事件处理程序类并init订阅事件,而不是覆盖对象和覆盖方法:OnInitializingOnInitialized

[FormEventHandler(formStr(Test), FormEventType::Initializing)]
public static void Test_OnInitializing(xFormRun sender, FormEventArgs e)
{
    // your code here
}

[FormEventHandler(formStr(Test), FormEventType::Initialized)]
public static void Test_OnInitialized(xFormRun sender, FormEventArgs e)
{
    // your code here
}
于 2018-09-26T08:08:38.963 回答
0

请浏览以下文档。它适用于 D365 表单打开。您可以覆盖此表单方法。 打开表单时的事件方法序列

于 2018-09-26T04:06:12.533 回答
0

好吧,您可以使用如下简单的测试表格自己尝试一下:

[Form]
public class TestForm1 extends FormRun
{
    void run()
    {
        info("test from run()");
        super();
    }
}  

如果你运行它,你会看到消息出现。

与以前的版本 (2009/2012) 一样,您只需查看如果您覆盖该方法,工具将生成的代码,如下所示:

工装

于 2018-09-26T04:33:36.617 回答