JumpRef on form extension/ Access child form record from parent form

Apply JumpRef on form extension/ Access child form record from parent form 



 








Use case: Jump to child form from standard form field and filter records on the child form.

Parent form: Let's suppose "SalesTable" is the parent form, and "SalesTable_DS" is its primary data source.

Child form: XXX_TestForm is the child form, XXXTestTable_DS is the primary data source.

Parent form extension:

[ExtensionOf(formStr(SalesTable))]

public final class XXXSalesTable_Extension

{

   public void jumpRef(FormControl _formControl)  

    {

        XXXTestTable     testTable; // Your target table

        MenuFunction     menuFunction;

        Args args    = new Args();

        str refValue = _formControl.valueStr();

        if (testTable.RecId)

        {

            select firstonly testTable where

                testTable.DlvMode == refValue;

            args.record(testTable);

            // Define the display menu item for the target form

            menuFunction = new MenuFunction(menuitemDisplayStr(XXX_TestTableDisplayMI), MenuItemType::Display);

            menuFunction.run(args);

        }

    }

  

   // Override jumpRef method on form initialized.

    [FormEventHandler(formStr(SalesTable), FormEventType::Initialized)]

    public static void SalesTable_OnInitialized(xFormRun sender, FormEventArgs e)

    {

        FormStringControl control = 

            sender.design().controlName(formControlStr(SalesTable, SalesTable_XXXDlvMode));

       // SalesTable_XXXDlvMode is the parent field where you want to apply jumpRef.

            control.registerOverrideMethod(methodStr(FormStringControl, jumpRef), 

            methodStr(XXXSalesTable_Extension, jumpRef), sender);

    }

}

  

Code on child form:

[Form]

public class XXX_TestForm extends FormRun

{

    [DataSource]

    class XXXTestTable

    {

         public void init()  // init() of XXXTestTable_DS

        {

            super();

            XXXTestTable             testTable = element.args().record();

            if (testTable.RecId)

           {

                   QueryBuildDataSource qbds      = XXXTestTable_ds.queryBuildDataSource();

                   qbds.addRange(fieldNum(XXXTestTable, DlvMode)).value(testTable.DlvMode);

                   XXXTestTable_ds.executeQuery();

            }

        }

    }

}


Comments

Popular posts from this blog

Execute D365 F&O SSRS report with parameter and upload report output on Azure blob storage using X++

Microsoft D365 F&O: Remove custom models from deployable package

Generate Text/CSV/DAT file using X++ and upload on Azure blob storage