【问题标题】:initialize value of edit method in init method of form在表单的init方法中初始化edit方法的值
【发布时间】:2020-10-26 10:48:00
【问题描述】:

我想在表单的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 ;
    }
 }

但是当我打开表单时,控件仍然是空的。

有什么建议吗?

【问题讨论】:

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

标签: axapta x++ dynamics-365


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    1. 您在 super() 之前设置值。应该是之后。
    2. 你不应该通过字段初始化值,你应该调用编辑方法来做。编辑方法有一个布尔 SET 参数,可以模拟设置值的调用。

    【讨论】:

      猜你喜欢
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      相关资源
      最近更新 更多