Saturday, 27 July 2024

MultiSelectLookup in d365 FO

 [ExtensionOf(formstr(CustTable))]

public final class MTPCustTable_Form_Extension

{

    public SysLookupMultiSelectCtrl    msCtrl;

 

     /// <summary>

    /// Building the DocuType query

    /// </summary>

    /// returns the Docutype Query

    public Query buildDocuTypeQuery()

    {

        Query       docuTypeQry = new Query(queryStr(CustGroupSRS));

        return docuTypeQry;

    }


    container getSelectedNotes(str _noteStr)

    {

        DocuType    docuType;

        container   tmpValues, conIds, conName;

        int         idx;

     

        if(_noteStr)

        {

            tmpValues = str2con(_noteStr, ';');

        }

     

        for(idx=1; idx<=conLen(tmpValues); idx++)

        {

            docuType = DocuType::find(conPeek(tmpValues, idx));

            conIds += docuType.RecId;

            conName += docuType.TypeId;

        }

     

        return [conIds, conName, conIds];

    }


    /// <summary>

    /// Code for the multi-lookup on form init

    /// </summary>

    /// formrun

    /// event args

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

    public void CustTable_OnInitialized(xFormRun sender, FormEventArgs e)

    {

        Query               docuTypeQry         =   this.buildDocuTypeQuery();

        FormStringControl   DocuTypes        =   this.design().controlName('Integration_MTP_MTPIdentifier');

 

        msCtrl   = SysLookupMultiSelectCtrl::construct(this,

                                            DocuTypes,

                                            querystr(CustGroupSRS),

                                            false,

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

 

        msCtrl.refreshQuery(docuTypeQry);

        msCtrl.set(this.getSelectedNotes(''));

    }

    /// <summary>

    ///

    /// </summary>

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

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

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

    public void MTPIdentifier_OnModified(FormDataObject sender, FormDataFieldEventArgs e)

    {

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

 

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

        custTable.MTPIdentifier     =   con2Str(msCtrl.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/