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

ทำได้ดังนี้
1.declare control ไว้ ตาม extended data type ที่จะใช้
1 2 3 4 | class LookupDialog extends RunBase { FormStringControl SalesIdCtrl, ItemIdCtrl; } |
2.สร้าง dialog
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 ได้
1 2 3 4 5 6 7 8 9 | 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
1 2 3 4 5 6 7 8 9 10 11 12 | 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 อื่น ๆ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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(); } } |
Written by Komkid on October 15th, 2009 with
no comments.
Read more articles on Axapta and Programming.
- [+] Digg: Feature this article
- [+] Del.icio.us: Bookmark this article
- [+] Furl: Bookmark this article