2017-02-14 43 views
1

在Dynamics 365中对于操作我试图使用LedgerTransVoucher的init()表单方法的事件后处理程序来查找tableId :是否有可能从动态365中的扩展方法获取element.args()进行操作

element.args()数据集()

有一个在我想与更多的一例扩展方法的大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();

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

这可以通过自定义很容易地完成,但我想尽我所能去使用扩展代替。

任何想法或可能的解决方法?

回答

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 
    } 
} 
相关问题