【问题标题】:Changing Default value of Checkbox in Ax2012更改 Ax2012 中复选框的默认值
【发布时间】:2023-08-15 01:20:01
【问题描述】:

对于复选框,我正在尝试将默认值设置为选中。

我将属性中的值设置为 1
默认情况下未选中。
重新启动 AOS,进行完全编译和 CIL 生成。
仍然没有运气。

我缺少什么想法?

【问题讨论】:

  • 设置value属性为1并保存更改后,尝试进入AOT中的表单,右键->恢复
  • 我试过这个,似乎没有什么不同。恢复的意义何在?
  • 有时当您对表单进行更改时,由于缓存,它们在您恢复之前不会显示。我认为如果您重新启动 AOS 并编译和生成 CIL,它可能会解决这个问题,但我认为尝试不会有什么坏处。
  • 感谢您的帮助,我清除了应用数据中的 AUC 文件以清除本地缓存。我今晚要重启编译。
  • 遗憾的是,完整编译、CIL 生成和刷新缓存仍然没有奏效。

标签: axapta x++ microsoft-dynamics dynamics-ax-2012 ax


【解决方案1】:

尝试使用 FormCheckBoxControl 方法在 run 方法或 classDeclaration 中将值输入为 1。

[复选框值] = FormCheckBoxControl.checked(1);

【讨论】:

  • 感谢您的回复。我试过你的方法FormCheckboxConrol CBC; CBC = isDeposit; CBC.checked(1); 还是不行。如果有帮助,我正在使用 CustPaymEntry 表单和 isDeposit 复选框。
  • CBC 只是您要申报的本地财产吗?如果您的复选框控件位于 AOT 中的 Designs 节点下,请将 AutoDeclaration 属性设置为 Yes 并按名称使用该复选框来设置值(即 <checkbox name>.checked(1);
  • CBC 被分配给设计节点中的 isDeposit
  • isDeposit.checked(true); 方法确实有效,我只需将它放在 run() 命令的末尾
【解决方案2】:

如果控件没有直接绑定到数据源记录,而不是这个:

ctrl.checked(true);

使用这个:

ctrl.value(true);

【讨论】:

    【解决方案3】:

    如果复选框链接到数据字段,则应将默认值放在数据源的initValues 方法上:

    tableName.fieldNoYes = NoYes::Yes;
    

    如果复选框未链接到数据,您可以在表单的run方法(在super()调用之后)检查它(假设控件具有AutoDeclaration属性到Yes

    CheckBoxControl.checked(true);
    

    【讨论】:

    • CheckBoxControl.checked(true) 不起作用,至少在 AX 2012 R3 上:如@user5659883 所建议的,要使其起作用,必须使用 value() 方法。