是否可以从 Dynamics 365 中的扩展方法获取 element.args() 以进行操作
Is it possible to get element.args() from an extended method in Dynamics 365 for operations
在 Dynamics 365 中的操作中,我尝试使用 LedgerTransVoucher 中 init() 表单方法的 post 事件处理程序来查找表 ID:
element.args().dataset()
方法中有一个很大的 switch 语句,我想再扩展一个案例。
到目前为止我所做的只是创建一个扩展 class 但我真的不知道如何从扩展方法中获取数据
[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();
当然行不通,但我想知道我是否能以某种方式从扩展方法中检索数据。
这可以通过自定义很容易地完成,但我想尽我所能来使用扩展。
有什么想法或可能的解决方法吗?
您可以尝试这样的操作:
[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
}
}
在 Dynamics 365 中的操作中,我尝试使用 LedgerTransVoucher 中 init() 表单方法的 post 事件处理程序来查找表 ID:
element.args().dataset()
方法中有一个很大的 switch 语句,我想再扩展一个案例。 到目前为止我所做的只是创建一个扩展 class 但我真的不知道如何从扩展方法中获取数据
[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();
当然行不通,但我想知道我是否能以某种方式从扩展方法中检索数据。
这可以通过自定义很容易地完成,但我想尽我所能来使用扩展。
有什么想法或可能的解决方法吗?
您可以尝试这样的操作:
[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
}
}