Scenario: On from ‘ProjAdjustmentSplit’ I want to enable/disable a field on certain condition. As D365 urge to not to customize ant standard object than write EventHandlers to achieve your requirement. In earlier version of AX, we simple write this logic either on Form Active method or from DS init method. Here we have to use EventHandlder for the same. Here we will use ‘OnInitialized’ method and will write an eventHandler for the same.
Let’s take a look.
Approach: Follow below step to get this done,
Step 1: Right click on “OnInitialized’ method and select ‘Copy event handler method’
Step 2: Create a new class and paste this method.
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[FormDataSourceEventHandler(formDataSourceStr(ProjAdjustmentSplit, TmpProjAdjustmentSplit), FormDataSourceEventType::Initialized)]
public static void TmpProjAdjustmentSplit_OnInitialized(FormDataSource sender, FormDataSourceEventArgs e)
{
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[FormDataSourceEventHandler(formDataSourceStr(ProjAdjustmentSplit, TmpProjAdjustmentSplit), FormDataSourceEventType::Initialized)]
public static void TmpProjAdjustmentSplit_OnInitialized(FormDataSource sender, FormDataSourceEventArgs e)
{
}
Step 3: Use below code to access form object
TmpProjAdjustmentSplit tmpProjAdjustmentSplit = sender.cursor();
FormDataSource tmpProjAdjustmentSplit_ds = sender.formRun().dataSource('TmpProjAdjustmentSplit');
FormRun element = sender.formRun();
FormControl projID;
projID= element.design(0).controlName("TmpProjAdjustmentSplit_ProjId");
FormDataSource tmpProjAdjustmentSplit_ds = sender.formRun().dataSource('TmpProjAdjustmentSplit');
FormRun element = sender.formRun();
FormControl projID;
projID= element.design(0).controlName("TmpProjAdjustmentSplit_ProjId");
Step 4: After above declaration now wrtie your actual business logic.
if(ProjParameters::find().myParameter== NoYes::Yes)
{
projID.allowEdit(false);
}
else
{
projID.allowEdit(true);
}
{
projID.allowEdit(false);
}
else
{
projID.allowEdit(true);
}
Step 5: Now go to
Project management and accounting > Periodic > Transactions > Adjust transactions and click on Adjust button to test your code.
Note: Try to add use the same code on your form and add more field using formConrol. Make sure you mark this control AutoDeclare = Yes on Form design
No comments:
Post a Comment