Axapta 改进方法

Axapta 改进方法,axapta,x++,dynamics-365,Axapta,X++,Dynamics 365,我需要写一个修改方法 有一个字段:LineViewHeader\u AccountType;一串具有可能的值:内部、客户、租户 根据选择的值,有必要列出这些值​​在字段中:LineViewHeader_AccountNum 目前,它列出AccountNum中的所有值,无论在AccountType中选择了什么 [Control("ComboBox")] class LineViewHeader_AccountType { /// <summary> /// //

我需要写一个修改方法

有一个字段:LineViewHeader\u AccountType;一串具有可能的值:内部、客户、租户

根据选择的值,有必要列出这些值​​在字段中:LineViewHeader_AccountNum

目前,它列出AccountNum中的所有值,无论在AccountType中选择了什么

[Control("ComboBox")]
class LineViewHeader_AccountType
{
    /// <summary>
    ///
    /// </summary>
    /// <returns></returns>
    public boolean modified()
    {
        boolean ret;

        ret = super();

        return ret;
    }
}

您需要将LineViewHeader\u AccountType控制值设置为范围:

[FormControlEventHandler(formControlStr(PMCContractDetails, 
LineViewHeader_AccountNum), FormControlEventType::Lookup)]
public static void LineViewHeader_AccountNum_OnLookup(FormControl sender, 
FormControlEventArgs e)
{
    Query                   query = new Query();
    QueryBuildDataSource    queryBuildDataSource;
    SysTableLookup          sysTableLookup;
    FormRun                 formRun;
    FormControl             formCtrl;


    formRun = sender.formRun();
    formCtrl = formRun.design().controlName(formControlStr(PMCContractDetails, LineViewHeader_AccountType));

    sysTableLookup = SysTableLookup::newParameters(tableNum(PMCContract), sender);
    queryBuildDataSource = query.addDataSource(tableNum(PMCContract));
    queryBuildDataSource.addRange(fieldNum(PMCContract, AccountType)).value(queryValue(formCtrl.valueStr()));

    sysTableLookup.addLookupField(fieldNum(PMCContract, AccountType), true);
    sysTableLookup.addLookupMethod(tableMethodStr(PMCContract, AccountNum));

    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();       
}

您需要将LineViewHeader\u AccountType控制值设置为范围:

[FormControlEventHandler(formControlStr(PMCContractDetails, 
LineViewHeader_AccountNum), FormControlEventType::Lookup)]
public static void LineViewHeader_AccountNum_OnLookup(FormControl sender, 
FormControlEventArgs e)
{
    Query                   query = new Query();
    QueryBuildDataSource    queryBuildDataSource;
    SysTableLookup          sysTableLookup;
    FormRun                 formRun;
    FormControl             formCtrl;


    formRun = sender.formRun();
    formCtrl = formRun.design().controlName(formControlStr(PMCContractDetails, LineViewHeader_AccountType));

    sysTableLookup = SysTableLookup::newParameters(tableNum(PMCContract), sender);
    queryBuildDataSource = query.addDataSource(tableNum(PMCContract));
    queryBuildDataSource.addRange(fieldNum(PMCContract, AccountType)).value(queryValue(formCtrl.valueStr()));

    sysTableLookup.addLookupField(fieldNum(PMCContract, AccountType), true);
    sysTableLookup.addLookupMethod(tableMethodStr(PMCContract, AccountNum));

    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();       
}

如果我理解正确,您需要根据AccountType的值筛选AccountNum的查找。如果我理解正确,请检查以下链接。您需要根据AccountType的值筛选AccountNum的查找。请检查以下链接check@Aliaksandr Maksimau的答案,您的答案缺少筛选表PMContract中数据的查询条件。check@Aliaksandr Maksimau的答案,您的答案缺少筛选表PMContract中数据的查询条件。