web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :

Usage of SysLookupMultiSelectCtrl in AX2012

Chaitanya Golla Profile Picture Chaitanya Golla 17,225

Hi,

SysLookupMultiSelectCtrl is one which helps to select multiple values on the dialog. I tried to show its usage with the help of an example like class that extends Runbasebatch and we select multiple ItemIds and display them.

Method: ClassDeclaration

class CG_MultiSelect extends RunBaseBatch
{
    DialogGroup                 dialogGrp;
    FormStringControl           dialogItemIds;
    FormStringControl           dialogItemIdNames;
    SysLookupMultiSelectCtrl    itemIdLookup;
    ItemId                      itemId;

    str                         itemIds;
    str                         itemIdNames;
    container                   itemIdsCon;

    #define.CurrentVersion(2)
    #define.Version(2)
    #localmacro.CurrentList
        itemIds,
        itemIdNames
    #endmacro
}

Method: Pack

public container pack()
{
    return [#CurrentVersion, #CurrentList];
}

Method: UnPack

public boolean unpack(container _packedClass)
{
    Version     version;
    container   packedQuery;

    version = RunBase::getVersion(_packedClass);

    switch (version)
    {
        case #CurrentVersion :
            [version, #CurrentList] = _packedClass;
            break;

        default :

            return false;
    }

    return true;
}

Method: dialog

protected Object dialog()
{
    FormGroupControl    setupGroupControl;

    #define.ItemIdLookup('ItemIdLookup')

    DialogRunbase dialog = super();

    dialog.alwaysOnTop(true);
    dialog.windowType(FormWindowType::Standard);
    dialogGrp = dialog.addGroup('Group');
    dialogGrp.frameType(FormFrameType::None);

    setupGroupControl = dialog.form().design().control(dialog.curFormBuildGroup().name());
    dialogItemIdNames = setupGroupControl.addControl(FormControlType::String, #ItemIdLookup);
    dialogItemIdNames.label("Item number");
    dialogItemIdNames.helpText("Select the itemId");

    return dialog;
}

Method: dialogPostRun

public void dialogPostRun(DialogRunbase dialog)
{
    FormRun formRun;

    super(dialog);

    formRun = dialog.dialogForm().formRun();

    if (formRun)
    {
        dialogItemIdNames = dialog.formRun().design().control(dialogItemIdNames.id());
        itemIdLookup = SysLookupMultiSelectCtrl::construct(dialog.formRun(), dialogItemIdNames, queryStr(InventTable));
        ItemIdLookup.set([str2con(itemIds), str2con(itemIdNames)]);
    }
}

Method: getFromDialog

public boolean getFromDialog()
{
    boolean ret;

    ret = super();

    itemIds     = con2Str(itemIdLookup.get());
    itemIdNames = dialogItemIdNames.valueStr();

    return ret;
}

Method: Run

public void run()
{
    System.Exception ex;
    #OCCRetryCount

    try
    {
        this.processOperation();
    }
    catch (Exception::Deadlock)
    {
        retry;
    }
    catch (Exception::UpdateConflict)
    {
        if (appl.ttsLevel() == 0)
        {
            if (xSession::currentRetryCount() >= #RetryNum)
            {
                throw Exception::UpdateConflictNotRecovered;
            }
            else
            {
                retry;
            }
        }
        else
        {
            throw Exception::UpdateConflict;
        }
    }

    catch (Exception::Error)
    {
        throw error("Error");
    }

    catch (Exception::CLRError)
    {
        ex = ClrInterop::getLastException();

        if (ex != null)
        {
            ex = ex.get_InnerException();
            if (ex != null)
            {
                error(ex.ToString());
            }
        }
    }
}

Method: main

public static void main(Args _args)
{
    CG_MultiSelect multiSelect;

    multiSelect = new CG_MultiSelect();

    if (multiSelect.prompt())
    {
        multiSelect.run();
    }
}

Input:

MultiSelect-_2D00_-Input.png

Output:

MultiSelect-_2D00_-output.png

Regards,

Chaitanya Golla

Comments

*This post is locked for comments