Axapta 初始化表单的init方法中编辑方法的值

Axapta 初始化表单的init方法中编辑方法的值,axapta,x++,dynamics-365,Axapta,X++,Dynamics 365,我想在表单的init方法中初始化edit方法的值,我写了以下内容: [Form] public class foo extends FormRun { str paymTermId; public void init() { CustTable custTable = CustTable::find("DE-001"); paymTer

我想在表单的init方法中初始化edit方法的值,我写了以下内容:

[Form]
public class foo extends FormRun
{
    str                                      paymTermId;


   public void init()
   {
      
       CustTable custTable = CustTable::find("DE-001");

       paymTermId = custTable.paymTermId;                          
       super();
   }

    edit str edtpaymTermId(boolean set, str _paymTermId)
    {

        if (set)
        {
             paymTermId= _paymTermId;
        }
        return paymTermId ;
    }
 }
但当我打开表单时,控件仍然为空


有什么建议吗?

我试图重现这个问题,但没有成功。对我来说,打开表单时,控件显示一个值

它不适用于您的一个可能原因是您在错误的公司打开了表单。在代码中,从customer DE-001的付款条件中检索要在控件中显示的值。该客户存在于Contoso演示数据中的USMF公司,其付款条件为Net10。如果表单在此公司中打开,则该值将显示在控件中。如果您在另一家公司(如DAT),则不显示任何值


我发现有两件事是错误的:

  • 您正在设置super()之前的值。应该是在之后
  • 您不应该通过字段初始化值,应该通过调用edit方法来初始化。编辑方法有一个布尔集合参数,可以模拟设置值的调用

  • 编辑方法通常放置在表或表单数据源上。您的编辑方法在表单上定义,并设置类变量而不是表/数据源字段。这是一个可以转换为AX365的AX2012。确保在表单控件上设置编辑方法。旁注:为什么对控件使用编辑方法而不是数据源字段(初始化数据源字段不需要编辑方法)?