Showing posts with label Lookup MultiSelect. Show all posts
Showing posts with label Lookup MultiSelect. Show all posts

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(), ';');

    }

 

}

  

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(), ';');

    }

}

Setting VendInvoiceInfoTable default values for custom fields - D365 FO

  When creating a vendor invoice and you are trying to populate custom fields on table VendInvoiceInfoTable you may find that the following ...