AX-2012 - Use AX Form As lookup in Dynamics Ax
In this article we will cover and learn how to create a lookup form and link this lookup form with EDT Field by following the step-by-step walk-through.
Scenario:-
As part of this tutorial, Consider that we need to overwrite the system lookup and use AX form as a lookup for the StringEditField.
StringEditField Lookup
Reference Group Lookup
Lookup from Lookup From
How to Create a Lookup Form
1-Create a new Form Named "CustLookupForm"
2-Add "custTable" in the form data source and in the reference data source of "custTable"add "DirPartyTable".
3-Set the property of custTable as below:-
Name : CustTable Table : CustTable
Index : AccountIdx AllowCheck : No
AllowEdit : No AllowCreate : No
AllowDelete : No OnlyFetchActive : Yes
4-Set the property of DirPartyTable as below:-
Name : DirPartyTable Table : DirPartyTable
JoinSource : CustTable JoinRelation : DirPartyTable_FK
5-Set propertys on Design node as below:-
As part of this tutorial, Consider that we need to overwrite the system lookup and use AX form as a lookup for the StringEditField.
StringEditField Lookup
public void lookup()
{
Query Query ;
QueryBuildDataSource QBDS;
SysTableLookup systbl=SysTableLookup::newParameters(tableNum(CustTable),this);
systbl.addLookupfield(fieldNum(CustTable,AccountNum));
systbl.addLookupfield(fieldNum(CustTable,CustGroup));
Query=new Query();
QBDS=Query.addDataSource(tableNum(CustTable));
systbl.parmQuery(Query);
systbl.performFormLookup();
}
Reference Group Lookup
public Common lookupReference()
{
Query Query ;
QueryBuildDataSource QBDS;
SysReferenceTableLookup sysRefTablelookup;
sysRefTablelookup =SysReferenceTableLookup::newParameters(tableNum(PayrollEarningCode),this);
sysRefTablelookup.addLookupfield(fieldNum(PayrollEarningCode,EarningCode));
sysRefTablelookup.addLookupfield(fieldNum(PayrollEarningCode,QuantityUnit));
Query=new Query();
QBDS=Query.addDataSource(tableNum(PayrollEarningCode));
sysRefTablelookup.parmQuery(Query);
return sysRefTablelookup.performFormLookup();
}
Lookup from Lookup From
public void lookup()
{
Args args;
FormRun custlookup;
args=new Args();
args.name(formStr(CustlookupForm));
args.caller(this);
custlookup=classFactory.formRunClass(args);
custlookup.init();
this.performFormLookup(custlookup);
}
How to Create a Lookup Form
1-Create a new Form Named "CustLookupForm"
2-Add "custTable" in the form data source and in the reference data source of "custTable"add "DirPartyTable".
3-Set the property of custTable as below:-
Name : CustTable Table : CustTable
Index : AccountIdx AllowCheck : No
AllowEdit : No AllowCreate : No
AllowDelete : No OnlyFetchActive : Yes
4-Set the property of DirPartyTable as below:-
Name : DirPartyTable Table : DirPartyTable
JoinSource : CustTable JoinRelation : DirPartyTable_FK
5-Set propertys on Design node as below:-
Style : Lookup
6-create a new Grid and set its property as below:-
ShowRowLabels : No DataSource : CustTable
7-Add new stringEdit control on the grid and set its property as below :-
DataSource : CustTable DataField : AccountNum
7-Add new stringEdit control on the grid and set its property as below :-
DataSource : CustTable DataField : AccountNum
8-Add new stringEdit control on the grid and set its property as below :-
9-Add new stringEdit control on the grid and set its property as below :-
10-Overwrite form init method
11-Overwrite form run method
Name : DirPartyTable_Name
DataSource : DirPartyTable DataField : Name9-Add new stringEdit control on the grid and set its property as below :-
Name : CustTable_CustGroup
DataSource : CustTable DataField : CustGroup10-Overwrite form init method
public void init()
{
super();
element.selectMode(CustTable_AccountNum);
}
11-Overwrite form run method
public void run()
{
FormStringControl CustAccount;
boolean Filterlookup;
;
CustAccount=SysTableLookup::getCallerStringControl(element.args());
Filterlookup=SysTableLookup::filterLookupPreRun(CustAccount,CustTable_AccountNum,CustTable_DS);
super();
SysTableLookup::filterLookupPostRun(Filterlookup,CustAccount.text(),CustTable_AccountNum,CustTable_DS);
}






