1

在用于操作的 Dynamics 365 中,我尝试使用 LedgerTransVoucher 中的 init() 表单方法的事件后处理程序来查找 tableId:

element.args().dataset()

方法中有一个很大的 switch 语句,我想用另一种情况进行扩展。到目前为止我所做的只是创建一个扩展类,但我真的不知道如何从扩展方法中获取数据

[ExtensionOf(formStr(LedgerTransVoucher))]
final class LedgerTransVoucher_Extension
{
    /// <summary>
    ///
    /// </summary>
    /// <param name="args"></param>
    [PostHandlerFor(formStr(LedgerTransVoucher), formMethodStr  (LedgerTransVoucher, init))]
    public static void LedgerTransVoucher_Post_init(XppPrePostArgs args)
    {
        TableId sourceTable;

        //sourceTable = element.args().dataset();
        //if(sourceTable == tableNum(myTable))
        //{
        //    do something here
        //}
    }
}

打电话:

sourceTable = element.args().dataset();

当然不起作用,但我不知道我是否可以以某种方式从扩展方法中检索数据。

这可以通过自定义轻松完成,但我想尽我所能使用扩展。

有什么想法或可能的解决方法吗?

4

1 回答 1

1

你可以尝试这样的事情:

[PostHandlerFor(formStr(LedgerTransVoucher), formMethodStr  (LedgerTransVoucher, init))]
public static void LedgerTransVoucher_Post_init(XppPrePostArgs args)
{
    TableId sourceTable;
    FormRun element;

    element = args.getThis();
    sourceTable = element.args().dataset();

    if(sourceTable == tableNum(myTable))
    {
        do something here
    }
}

或者

[FormEventHandler(formStr(LedgerTransVoucher), FormEventType::Initialized)]
public static void LedgerTransVoucher_OnInitialized(xFormRun sender, FormEventArgs e)
{
    if(sender.args().dataset() == tableNum(myTable))
    {
        do something here
    }
}
于 2017-02-14T15:26:52.523 回答