Monday, November 24, 2014

Dynamics AX EP form in Edit and Insert mode

Generally when we worked on designing detail EP form we have two options to open EP form in Insert and Edit mode, either design two separate EP forms with same piece of code except Designmode property set to Inset or Edit. Other way is to create single EP form and write code behind to open form in either mode. to do this design your EP form and create two web menu items and set parameters as follow:

mode=1 :- edit
mode=2 :- insert

Open your fom C# code behind and write following code:

    protected void Page_Load(object sender, EventArgs e)
    {
        this.SetupMode();
        
    }      

    ApplicationProxy.EPFormAction FormMode
    {
        get
        {
            return (ApplicationProxy.EPFormAction)Convert.ToInt16(
            this.Page.Request.QueryString.Get("mode")); // This mode is the param set in web menu item url, i.e. mode=1
        }
    }
    private ISession AxSession
    {
        get
        {
            AxBaseWebPart webpart = AxBaseWebPart.GetWebpart(this);
            return webpart == null ? null : webpart.Session;
        }
    }
    private void SetupMode()
    {
        //Proxy.Info objInfoLog = new Proxy.Info(this.AxSession.AxaptaAdapter);
        //objInfoLog.add(Proxy.Exception.Warning, Convert.ToString(this.FormMode));
        switch (this.FormMode)
        {
            case ApplicationProxy.EPFormAction.EditMode:
                
                this.Form1.DefaultMode = DetailsViewMode.Edit;
                this.Form1.AutoGenerateEditButton = true;
                this.Form1.AutoGenerateInsertButton = false;
                break;
            
            case ApplicationProxy.EPFormAction.CreateMode:
                this.Form1.DefaultMode = DetailsViewMode.Insert;
                this.Form1.AutoGenerateEditButton = false;
                this.Form1.AutoGenerateInsertButton = true;
                break;

            default:
                this.Form1.DefaultMode = DetailsViewMode.ReadOnly;
                this.Form1.AutoGenerateEditButton = false;
                this.Form1.AutoGenerateInsertButton = false;
                break;
        }
    }

You are all set to see this dynamic behavior.  just to recap here are the steps:


  1. Design and deploy new form with default ReadOnly mode 
  2. Create separate web menu items for Edit and Insert operations and set property Parameter=‘mode=1’ for Edit or ‘mode=2’ for insert.
  3. Get the session object by creating property AxSession
  4. Create FormMode() method in Form1.aspx.cs to get mode via a query string.
  5. Create SetupMode() method in Form1.aspx.cs 


Happy DAXing !!!!

No comments: