Tuesday, 30 July 2024

Multiselect lookup in d365 FO using form extensions

/// <summary>

/// This class is an extension of custTable form

/// </summary>

[ExtensionOf(formstr(CustTable))]

public final class PWDCustTable_Form_Extension

{

    public SysLookupMultiSelectCtrl    msCtrl;

 

    /// <summary>

    /// This method is used to initialise the values

    /// </summary>

    void init()

    {

        FormStringControl PWD_PVSIdentifier;

 

        next init();

 

        PWD_PVSIdentifier = this.design().controlName(formControlStr(CustTable, PWD_Integration_PWD_PVSIdentifier));

       

        msCtrl   = SysLookupMultiSelectCtrl::construct(this,

                                            PWD_PVSIdentifier,

                                            querystr(CustGroupSRS),

                                            false,

                                            [tableNum(CustGroup), fieldNum(CustGroup,CustGroup)]);

    }

 

    /// <summary>

    /// This method is used to pass parm logic

    /// </summary>

    /// <param name = "_msCtrl">SysLookupMultiSelectCtrl</param>

    /// <returns></returns>

    public SysLookupMultiSelectCtrl parmMultiSelectCtl(SysLookupMultiSelectCtrl _msCtrl =msCtrl)

    {

        msCtrl =  _msCtrl;

 

        return msCtrl;

    }

 

}

/// <summary>

/// Event handler class for customers form

/// </summary>

final class PWDCustTableEventHandler

{

    /// <summary>

    /// This method is used to updated multiselect values

    /// </summary>

    /// <param name="sender">FormDataObject</param>

    /// <param name="e">FormDataFieldEventArgs</param>

    [FormDataFieldEventHandler(formDataFieldStr(CustTable, CustTable, PWD_PVSIdentifier), FormDataFieldEventType::Modified)]

    public static void PWD_PVSIdentifier_OnModified(FormDataObject sender, FormDataFieldEventArgs e)

    {

        FormRun                     formRun         = sender.datasource().formRun();

        SysLookupMultiSelectCtrl    multiSelectCtrl = formRun.parmMultiSelectCtl();

        CustTable                   custTable       = formRun.dataSource(FormDataSourceStr(CustTable, CustTable)).cursor() as CustTable;

 

        custTable.PWD_PVSIdentifier = con2Str(multiSelectCtrl.getSelectedFieldValues(), ';');

    }

 

}

  

No comments:

Post a Comment

workflow business event configuration with power automate flow in d365 FO

  https://www.linkedin.com/pulse/purchase-order-approvals-d365fo-power-automate-ahmed-ali-el-bardisy-jyssf/