D365:LookUp


前言

在Form的字段的onLookUp方法中,添加下拉框。

一、SysTableLookup

1、复制onLookUp事件方法

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

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);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值