D365单击命令按钮上的方法

时间:2019-06-14 10:37:17

标签: axapta microsoft-dynamics x++ dynamics-finance-and-operations

在D365财务和运营部门中,在TaxExempt常规部分的形式中,有多个字段,如CodeType,CodeName,CompanyList(下拉菜单)。 用户应输入所需的值(类型和名称)。 在下一部分“属性增值税-设置”中,有命令按钮“新建”。单击该按钮时,它应创建具有以下值的行:“常规”部分:“公司”(来自公司列表选择),“营业税代码”(来自代码类型)和“名称”(来自代码名称)。目前,它仅创建空白行。有一些建议如何执行吗?

enter image description here

1 个答案:

答案 0 :(得分:3)

实现目标的方法是表单数据源上的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.
    }
}

如果要创建扩展,则实际上存在多个事件,具体取决于现有的基准代码。与上面提到的非扩展解决方案相比,OnInitValue将是类似的,但是如果其中有现有代码,则如果formdatasource上已经存在默认逻辑,则它可能会覆盖您的字段。这是因为该事件将作为框架在super()调用中最后调用的方法之一触发,但会在放置在super()之后的任何代码之前触发。这使扩展方案变得复杂。

在这种情况下,您可以查看OnCreated事件的默认值,该事件将在先前的事件和这些方法和/或事件可能已经存在的“基础” /“即用型代码”之后触发。这将使用您在oncreated事件中指定的值覆盖任何现有的默认/初始化逻辑,同时还为您提供要使用的表单的上下文(这与没有使用表单控件/值的表级事件相反)满足您的要求

enter image description here