This X++ Code Snippet post will describe how you can disable a form element, based on the value of another form element.
As example, the CustTable form will be used. The example will disable the One-time customer checkbox on the General tab if the Mandatory credit limit checkbox is checked on the same General tab.
Step 1: Change some form properties
- Select the Administration Field Group on the TabGeneral TabPage and set the AutoDataGroup Property to No.
- Select the Administration_OneTimeCustomer CheckBox field in the Field Group Administration and set the AutoDeclaration property to Yes.
Step 2: Create a form method to enable/disable the form element
Create a new form method setAccessOneTimeCustomer:
void setAccesssOneTimeCustomer()
{
if (CustTable.MandatoryCreditLimit)
{
Administration_OneTimeCustomer.enabled(false);
}
else
{
Administration_OneTimeCustomer.enabled(true);
}
custTable_DS.refresh();
}
Step 3: call the form method in the active and the modified
Call the newly created form method in the active method on the Data Source of the Form. As such, the second field will be enabled or disabled appropriately upon scrolling through the form.
public int active()
{
int ret;
element.setAccesssOneTimeCustomer();
ret = super();
return ret;
}
Call the newly created form method in the modified method on the field which should trigger the enabling or disabling. In our example, it is the field MandatoryCreditLimit. As such the second field, in our case OneTimeCustomer wil be enabled or disabled each time the value of MandatoryCreditLimit is changed.
public void modified()
{
element.setAccesssOneTimeCustomer();
super();
}
Step 4: Test your modifications
Open the CustTable form: check the field Mandatory credit limit: the field One-time customer will be disabled immediately.
Hey, this is a really great article for AX developers. Well done here.
Nice post, this helped me a lot!
Sorry if this is so simeple but do we have a get lase value of element or .last()?
Basically I am selected all data and have the header in one programmable area and the department in another programable area and need it to place all information under that header.
EX:
Title
aaa
bbb
Title2
ccc
ddd
Example:
if ( (gpcFTEREport.dept[1]) == gpcFTEREport.dept[1])
{
if (PDN == TRUE)
{
element.execute(2);
PDN = false;
}
}
if (PDN == false)
{
element.execute(3);
PDN = false;
}
}
Thanks a lot for this, it really helped me!
Post a Comment