在D365财务和运营部门中,在TaxExempt常规部分的形式中,有多个字段,如CodeType,CodeName,CompanyList(下拉菜单)。 用户应输入所需的值(类型和名称)。 在下一部分“属性增值税-设置”中,有命令按钮“新建”。单击该按钮时,它应创建具有以下值的行:“常规”部分:“公司”(来自公司列表选择),“营业税代码”(来自代码类型)和“名称”(来自代码名称)。目前,它仅创建空白行。有一些建议如何执行吗?
答案 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事件中指定的值覆盖任何现有的默认/初始化逻辑,同时还为您提供要使用的表单的上下文(这与没有使用表单控件/值的表级事件相反)满足您的要求