Reference Group Control lookups in AX 2012
With the addition of
reference groups fields the AX forms including the dialog form gives a rich
control called the FormReferenceGroupControl.
With this post, I will show you how to add a reference field in the batch
dialog form and add a filtered query controlled drop down.
I am going to show with
a EcoResCategoryId field. The requirement is to filter out categories with
Level 3 and present in the batch dialog dropdown.
Class Declaration:
Declare the
warehouse and category fields and dialog fields as below.
InventLocationId inventLocationId;
EcoResCategoryId EcoResCategoryId;
DialogField
DialogInventLocationId,DialogEcoResCategoryId;
Dialog Method:
public Object dialog()
{
dialog dialog = new DialogRunbase("@ZON2996",this);
DialogEcoResCategoryId =
dialog.addField(extendedTypeStr(EcoResCategoryId),"Category");
DialogInventLocationId =
dialog.addField(extendedTypeStr(InventLocationId),"Warehouse");
return dialog;
}
DialogPostRun method should be overridden to enable the
lookup method of the fields
public void
dialogPostRun(DialogRunbase _dialogloc)
{
super(_dialogloc);
_dialogloc.dialogForm();
_dialogloc.dialogForm().formRun().controlMethodOverload(true);
_dialogloc.dialogForm().formRun().controlMethodOverloadObject(this);
_dialogloc.formRun().controlMethodOverload(true);
_dialogloc.formRun().controlMethodOverloadObject(this);
}
Determine the field Id of the control from the dialog form. Personalizing
will show you the below form.
From the below form we know that Fld1_1 is the field for the
category. Also note that as it is reference group, a Name field is shown that
should hold the category information in the string box.
Lookup:
We would need to create a lookup method for the above field
as below.
void Fld1_1_lookup()
{
Query DropDownquery = new
Query();
FormControl frmSTr =
DialogEcoResCategoryId.dialog().formRun().controlCallingMethod();
//Use the SysReferenceTableLookup class instead of
SystableLookup class for such reference group control
SysReferenceTableLookup sysTableLookup =
SysReferenceTableLookup::newParameters(tableNum(EcoResCategory), frmSTr,true);
QueryBuildDataSource qbds;
QueryBuildRange qbr,qbr1;
;
qbds =
DropDownquery.addDataSource(tableNum(EcoResCategory));
qbr = qbds.addRange(fieldNum(EcoResCategory,Level));
qbr.value(queryValue(3));
sysTableLookup.addSelectionField(fieldNum(EcoResCategory,
Name));
sysTableLookup.addLookupField(fieldNum(EcoResCategory,
ReciD));
sysTableLookup.addLookupField(fieldNum(EcoResCategory,
Name));
sysTableLookup.addLookupField(fieldNum(EcoResCategory,
Code));
sysTableLookup.parmQuery(DropDownquery);
sysTableLookup.performFormLookup();
}
No comments:
Post a Comment