Reputation: 39
In Dynamics 365 for operations I am trying to use a post-event handler of the init() form method from LedgerTransVoucher to find tableId of:
element.args().dataset()
There is a big switch statement in the method that i want to extend with one more case. What i have done so far is just creating an extension class but i don't really know how to get the data from the extended method
[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
//}
}
}
to call:
sourceTable = element.args().dataset();
of course doesn't work but i wan't to know if i can somehow retrieve the data from the extended method.
This can be done very easily with customization but i want to do everything i can to use extensions instead.
Any ideas or possible workarounds?
Upvotes: 1
Views: 6920
Reputation: 2281
You can try something like this:
[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
}
}
or
[FormEventHandler(formStr(LedgerTransVoucher), FormEventType::Initialized)]
public static void LedgerTransVoucher_OnInitialized(xFormRun sender, FormEventArgs e)
{
if(sender.args().dataset() == tableNum(myTable))
{
do something here
}
}
Upvotes: 1