Axapta : Dialog with lookup control
วิธีสร้าง dialog แบบที่มี control ซึ่ง lookup ได้ เช่น เลือก SalesId แล้วให้อีก control นึง คือ ItemId lookup มาเฉพาะของ SalesId นั้น

ทำได้ดังนี้
1.declare control ไว้ ตาม extended data type ที่จะใช้
2.สร้าง dialog
3.Set ให้ control สามารถ override method ตอน runtime ได้
4.สร้าง lookup method
5.เก็บรายละเอียด method อื่น ๆ
ที่มา :

ทำได้ดังนี้
1.declare control ไว้ ตาม extended data type ที่จะใช้
class LookupDialog extends RunBase
{
FormStringControl SalesIdCtrl, ItemIdCtrl;
}
2.สร้าง dialog
protected Object dialog(Dialog dialog, boolean forceOnClient)
{
DialogRunBase ret;
;
ret = super(dialog, forceOnClient);
ret.caption('Costing report by order');
SalesIdCtrl = ret.formBuildDesign().addControl(FormControlType::String,'SalesId');
SalesIdCtrl.extendedDataType(extendedTypeNum('SalesId'));
ItemIdCtrl = ret.formBuildDesign().addControl(FormControlType::String,'ItemId');
ItemIdCtrl.extendedDataType(extendedTypeNum('ItemId'));
return ret;
}
3.Set ให้ control สามารถ override method ตอน runtime ได้
public void dialogPostRun(DialogRunbase dialog)
{
;
super(dialog);
dialog.dialogForm().formRun().controlMethodOverload(true);
dialog.dialogForm().formRun().controlMethodOverloadObject(this);
SalesIdCtrl = dialog.dialogForm().formRun().design().controlName('SalesId');
ItemIdCtrl = dialog.dialogForm().formRun().design().controlName('ItemId');
}
4.สร้าง lookup method
void ItemId_lookup()
{
Query query = new Query();
SysTableLookup sysTableLookup =
SysTableLookup::newParameters(tableNum(SalesLine), SalesIdCtrl);
;
sysTableLookup.addLookupField(fieldNum(SalesLine, ItemId));
sysTableLookup.addLookupField(fieldNum(SalesLine, Name));
query.addDataSource(tableNum(SalesLine)).addRange(fieldNum(SalesLine,SalesId)).value(SalesIdCtrl.text());
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
5.เก็บรายละเอียด method อื่น ๆ
public container pack()
{
return conNull();
}
public boolean unpack(container packedClass)
{
return true;
}
static void main(Args _args)
{
LookupDialog test1 = new LookupDialog();
;
if (test1.prompt())
{
test1.run();
}
}
ที่มา :
Comments