Axapta D365单击命令按钮上的方法

Axapta D365单击命令按钮上的方法,axapta,microsoft-dynamics,x++,dynamics-365-operations,Axapta,Microsoft Dynamics,X++,Dynamics 365 Operations,在D365 Finance and Operations中,在TaxExempt表单的General部分,有几个字段,如CodeType、CodeName、CompanyList(下拉菜单)。 用户应键入所需的值(类型和名称)。 在下一节“属性增值税-设置”中有“新建”命令按钮。单击该按钮时,它应该创建一行,其中的值取自常规部分:公司(来自公司列表选择)、增值税代码(来自代码类型)和名称(来自代码名称)。目前,它只创建空行。是否有一些建议如何执行 实现目标的方法是表单数据源上的initValue

在D365 Finance and Operations中,在TaxExempt表单的General部分,有几个字段,如CodeType、CodeName、CompanyList(下拉菜单)。 用户应键入所需的值(类型和名称)。 在下一节“属性增值税-设置”中有“新建”命令按钮。单击该按钮时,它应该创建一行,其中的值取自常规部分:公司(来自公司列表选择)、增值税代码(来自代码类型)和名称(来自代码名称)。目前,它只创建空行。是否有一些建议如何执行


实现目标的方法是表单数据源上的initValue。在super()调用之后,添加表单上其他字段的默认值。示例可能如下所示:

[DataSource]
class TaxExemptCodeTable
{
    /// <summary>
    /// Default values from other form controls/fields on new record creation
    /// </summary>
    public void initValue()
    {
        super();

        TaxExemptCodeTable.Value = CustomFormControl.text();

        //etc.
    }
}
[数据源]
类taxemptcodetable
{
/// 
///创建新记录时来自其他表单控件/字段的默认值
/// 
public void initValue()
{
超级();
TaxExemptCodeTable.Value=CustomFormControl.text();
//等等。
}
}
如果您正在创建扩展,根据现有的基线代码,实际上有多个事件。与上述非扩展解决方案相比,OnInitValue将是类似的解决方案,但如果此解决方案上存在代码,则如果formdatasource上已经存在默认逻辑,则可能会覆盖您的字段。这是因为该事件将作为框架在super()调用中调用的最后一个方法之一触发,但在放置在super()之后的任何代码之前。这使扩展场景复杂化

如果是这种情况,您可以查看OnCreated事件上的默认值,该事件将在以前的事件之后触发,以及这些方法和/或事件上可能已经存在的“基本”/“开箱即用代码”。这将使用您在oncreated事件中指定的值覆盖任何现有的默认/init逻辑,同时还将为您提供要处理的表单上下文(与表级事件相反,表级事件没有表单控件/值可供使用,而表单控件/值似乎是您的需求所必需的)