文章目录
前言
在Form的字段的onLookUp方法中,添加下拉框。
一、SysTableLookup
1、复制onLookUp事件方法
2、LookUp方法
[FormControlEventHandler(formControlStr(EcoResProductDetailsExtended, VyaKeyItemType_VyaMaterialSubCode), FormControlEventType::Lookup)]
public static void VyaKeyItemType_VyaMaterialSubCode_OnLookup(FormControl sender, FormControlEventArgs e)
{
FormControlCancelableSuperEventArgs ce = e as FormControlCancelableSuperEventArgs;
FormRun formRun = sender.formRun();
FormStringControl vyaMaterialCodeCtrl = formRun.design().controlName(formControlStr(EcoResProductDetailsExtended, VyaKeyItemType_VyaMaterialCode));
str vyaMaterialCodeStr = vyaMaterialCodeCtrl.text();
Query query = new Query();
QueryBuildDataSource qbds;
QueryBuildRange qbr;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(VyaMaterialsSubCategories), sender);
sysTableLookup.addLookupfield(fieldNum(VyaMaterialsSubCategories, VyaCode));
sysTableLookup.addLookupfield(fieldNum(VyaMaterialsSubCategories, VyaDescription));
qbds = query.addDatasource(tablenum(VyaMaterialsSubCategories));
qbr = qbds.addRange(fieldNum(VyaMaterialsSubCategories,VyaParentMaterial));
qbr.value(queryValue(vyaMaterialCodeStr));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
ce.CancelSuperCall();
}
3、写在Form中
也可以重写字段的lookup方法
[Control("String")]
class VyaWarehouseAttachmentConfigTable_VyaInventLocation
{
/// <summary>
///
/// </summary>
public void lookup()
{
//super();
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(InventLocation), this);
Query query = new Query();
QueryBuildDataSource qbds;
QueryBuildRange qbr;
sysTableLookup.addLookupfield(fieldNum(InventLocation, InventLocationId));
sysTableLookup.addLookupfield(fieldNum(InventLocation, Name));
qbds = query.addDataSource(tableNum(InventLocation));
qbr = qbds.addRange(fieldNum(InventLocation, OverseasWarehouseCode));
qbr.value(SysQuery::valueNot(""));
SysTableLookup.parmQuery(query);
SysTableLookup.performFormLookup();
}
}
二、调用Form
1、代码
在onlookup中
[FormControlEventHandler(formControlStr(WMSPickingRoutesJournal, VyaAddressGroup_VyaLogisticsPostalAddress), FormControlEventType::Lookup)]
public static void VyaAddressGroup_VyaLogisticsPostalAddress_OnLookup(FormControl sender, FormControlEventArgs e)
{
FormControlCancelableSuperEventArgs ce = e as FormControlCancelableSuperEventArgs;
FormRun fr = sender.formRun();
FormReferenceGroupControl ffbc = sender.formRun().control(sender.formRun().controlId('VyaAddressGroup_VyaLogisticsPostalAddress'));
FormDataSource fds = fr.dataSource(formDataSourceStr(WMSPickingRoutesJournal,WMSPickingRoute));
WMSPickingRoute wMSPickingRoute = fds.cursor();
FormDataSource formDS;
FormRun formRun;
Args args = new Args();
args.name(formStr(VyaCustLogisticsPostalAddressLookUp));
args.caller(fr);
formRun = classfactory.formRunClass(args);
formRun.init();
formDS = formRun.dataSource(4);
Query query = formDS.query();
QueryBuildDataSource qbds = query.dataSourceTable(tableNum(CustTable));
QueryBuildRange range;
range = qbds.addRange(fieldNum(CustTable, AccountNum));
range.value(wMSPickingRoute.customer);
//formRun.wait();
ffbc.performFormLookup(formRun);
ce.CancelSuperCall();
}
三、EDT字段调用Form
1、新建Lookup Form
如图,Pattren 应用Lookup-Basic;选择要返回的字段属性Auto Declaration 设为Yes.
在Form的class类中,写如下代码,返回选择字段,也就是上面自动声明的字段。
[Form]
public class VyaPurchInvoiceIdLookup extends FormRun
{
public void init()
{
super();
element.selectMode(VendInvoiceJour_InvoiceId);
}
}
单选
2、新建EDT
新建一个EDT String ,在属性Form Help中填写上面的Looup Form.
3、继承字段
在需要下拉的数据源字段中,属性继承EDT字段。
一、SysLookupMultiSelectCtrl
public void init()
{
super();
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
queryBuildDataSource = query.addDataSource(tableNum(ProdTable));
queryBuildDataSource.addSelectionField(fieldNum(ProdTable, ProdId));
queryBuildDataSource.fields().dynamic(NoYes::No);
queryBuildDataSource.fields().clearFieldList();
queryBuildDataSource.fields().addField(fieldNum(ProdTable, ProdId));
SysLookupMultiSelectCtrl::constructWithQuery(this, InquiryProdId, query);
}