Contact Me

Total Pageviews

Thursday 21 August 2014

Disabling some Form elements in Axapta

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 limitcheckbox is checked on the same General tab.



  1. Select the Administration Field Group on the TabGeneral TabPage and set the AutoDataGroup Property to No.
  2. 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 Sourceof 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 fieldMandatoryCreditLimit. As such the second field, in our case OneTimeCustomerwil 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.


































No comments:

Post a Comment