【问题标题】:overriding displayOption to color certain lines according to a value from displayMethod覆盖 displayOption 以根据 displayMethod 中的值为某些行着色
【发布时间】:2023-07-09 02:39:01
【问题描述】:

我正在尝试覆盖表单上的displayOption,以便根据某些条件为某些行着色,当我的条件与正常字段相关时,我对此没有任何问题,示例代码:

public void displayOption(Common _record, FormRowDisplayOption _options)
{
 if (_record.(fieldnum(MY_Table,My_Field))=="YES")
 {
  _options.backColor(WinAPI::RGB2int(161,161,255));
 }
  super(_record, _options);
}

但我的问题是,我想在 displayMethod 上设置条件而不是普通字段

【问题讨论】:

  • 是表格展示方式还是表单数据源展示方式​​?如果它在一张桌子上,它应该可以在您的初始负载上工作,但随着数据的变化,它可能不会并且可能会给您一些奇怪的行为。它有什么作用?
  • 它是一种表格显示方法,如果它应该工作,我怎么能调用它而不是字段?
  • 只需将_record 转换为您的实际表缓冲区。因此,如果是 SalesTable,您将创建一个 SalesTable salesTable;,然后创建 salesTable = _record as SalesTable,然后创建 if (salesTable.tableDisplayMethod() == "whatever")
  • 完美运行,谢谢!
  • 太棒了!我将评论更改为帮助他人的答案。

标签: axapta x++ dynamics-ax-2012 dynamics-ax-2012-r2 dynamics-ax-2012-r3


【解决方案1】:

显示方法将起作用,您只需将Common _record 强制转换为表格缓冲区,然后您就可以访问表格方法。

所以如果是SalesTable,你会创建:

SalesTable      salesTable;

salesTable = _record as SalesTable;
if (salesTable.yourTableDisplayMethod == "whatever") { // Do something }

然后就可以正常使用显示方式了。

【讨论】:

    最近更新 更多