X ++如何为D365表单运行

时间:2018-09-25 20:58:30

标签: axapta x++ dynamics-365-operations

在D365中,我知道如何为DataSource,DataField和Control运行代码。但是如何为Form运行代码“ Run”“ Init”?

如果我仅在“表单”级别下写“运行”和“初始化”。它会自动运行吗? 或者,我需要一些方法打电话给他们? 如何为表单运行此“运行”?

enter image description here

3 个答案:

答案 0 :(得分:1)

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

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

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

[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
}

答案 1 :(得分:0)

请仔细阅读以下文档。它适用于D365表单打开。您可以覆盖此表单方法。 Event Method Sequences when a Form is Opened

答案 2 :(得分:0)

好吧,您可以自己使用一个简单的测试表单进行尝试,如下所示:

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

如果运行它,您将看到消息出现。

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

Tooling