Usage of SysLookupMultiSelectCtrl in AX2012
Views (4358)
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:
Output:
Regards,
Chaitanya Golla

Like
Report
*This post is locked for comments