我的 SysOperation UiBuilder 错误中的两次查找

问题描述 投票:0回答:2

当我单击我的 Sa_Type 字段时,它是一个包含 Vendor 和 Customer 的基本枚举,我希望它用所有客户或所有供应商填充我的第二个名为 combo 的字段,但这样我收到错误

RegisterOverrideMethod 被方法的同一个对象调用了两次 '抬头'。每个实例只能覆盖一次方法 系统操作

我正在覆盖修改以便知道我何时单击供应商或客户。 任何解决方案?

public class AdjustmentUiBuilder extends SysOperationAutomaticUIBuilder
    {
        DialogField type;
        DialogField combo;
        
        
        public void build()
        {
            super();
    
            type = this.bindInfo().getDialogField(this.dataContractObject(), methodStr(AdjustmentSysContract, parmType));
            combo = this.bindInfo().getDialogField(this.dataContractObject(), methodStr(AdjustmentSysContract, parmCombo));
            
            this.modifyDialogFields();
        }
    
        public void postRun()
        {
            type.registerOverrideMethod(methodStr(FormComboBoxControl, modified), methodStr(AdjustmentUiBuilder, moduleCustVend_modified), this);
        }
    
        private void lookupCustAccount(FormStringControl _formStringControl)
        {
            Query query = new Query();
            QueryBuildDataSource qbds;
            SysTableLookup sysTableLookup;
    
            sysTableLookup = SysTableLookup::newParameters(tableNum(CustTable), _formStringControl);
                
            qbds = query.addDataSource(tableNum(custTable));
    
            sysTableLookup.addLookupfield(fieldNum(CustTable, AccountNum), true);
            sysTableLookup.parmQuery(query);
            sysTableLookup.performFormLookup();
        }
    
        private void lookupVendor(FormStringControl _formStringControl)
        {
            Query query = new Query();
            QueryBuildDataSource qbds;
            SysTableLookup sysTableLookup;
    
            sysTableLookup = SysTableLookup::newParameters(tableNum(VendTable), _formStringControl);
                
            qbds = query.addDataSource(tableNum(vendTable));
    
            sysTableLookup.addLookupfield(fieldNum(VendTable, AccountNum), true);
            sysTableLookup.parmQuery(query);
            sysTableLookup.performFormLookup();
        }
    
        private boolean moduleCustVend_modified(FormComboBoxControl _control)
        {
            this.modifyDialogFields();
    
            return _control.modified();
        }
    
        private void modifyDialogFields()
        {
            if(type.value() == Sa_Type::Customer)
            {         
                    combo.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(AdjustmentUiBuilder, lookupCustAccount), this);
            }
            else
            {
                    combo.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(AdjustmentUiBuilder, lookupVendor), this);
            }
        }
x++ dynamics-365 dynamics-365-operations
2个回答
0
投票

我看到在 postRun() 中遗漏了 super() 方法的调用。


0
投票

所以我认为这是错误的,并且使用旧代码我正在覆盖同一个对话框。这是我必须填写查找的解决方案。

public void postRun()
    {
       
        account.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(AdjustmentUiBuilder, lookupAccount), this);
        item.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(AdjustmentUiBuilder, lookupAccountItem), this);
        reason.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(AdjustmentUiBuilder, lookupReason), this);
    }

    private void lookupAccount(FormStringControl _formStringControl)
    {
        if(type.value() == Sa_Type::Customer)
        {
            Query query = new Query();
            QueryBuildDataSource qbds;
            SysTableLookup sysTableLookup;
            QueryBuildRange         queryBuildRange;
            sysTableLookup = SysTableLookup::newParameters(tableNum(CustTable), _formStringControl);
            
            qbds = query.addDataSource(tableNum(custTable));

            sysTableLookup.addLookupfield(fieldNum(CustTable, AccountNum), true);

            sysTableLookup.parmQuery(query);
            sysTableLookup.performFormLookup();
        }
        else
        {
            Query query = new Query();
            QueryBuildDataSource qbds;
            SysTableLookup sysTableLookup;

            sysTableLookup = SysTableLookup::newParameters(tableNum(VendTable), _formStringControl);
            
            qbds = query.addDataSource(tableNum(vendTable));

            sysTableLookup.addLookupfield(fieldNum(VendTable, AccountNum), true);
            sysTableLookup.parmQuery(query);
            sysTableLookup.performFormLookup();
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.