如何创建依赖于其他两种显示方法的显示方法?

时间:2016-04-11 22:00:10

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

我有一个标题/行类型的对象(想想SalesTable / PurchTable),在标题上我有两个计算的显示方法,“总数量”和“总发票”。

我想添加一个简单的显示“完全开票”,这是一种返回的显示方法:

return this.TotalQty() == this.TotalInvoiced();

问题是再次调用两个显示方法计算,这可能会对ListPages产生影响。

有没有办法制作一个使用缓存值的表单方法,所以我不必调用额外的计算而且我不必创建表列?

1 个答案:

答案 0 :(得分:3)

据我所知,无法访问代码中显示方法缓存的值。

您可以在表格上定义显示方法并使用existing caching mechanism。您还必须在表格中定义其他两种显示方法totalQtytotalInvoiced。请注意,这仍会导致对totalQtytotalInvoiced进行一些不必要的调用。

另一种方法是通过例如在表单中实现自己的缓存机制。使用包含RecIds和缓存值的映射(有关示例/教程,请参阅Caching display methods on a form datasource)。但如果表现更像理论而不是实际问题,我不会推荐这种方法。

第三个选项可能是将totalQtytotalInvoiced中的查询合并到一个查询中,然后由fullyInvoiced显示方法使用。这将在您的代码中引入一些冗余,您仍然需要在表上定义fullyInvoiced以利用缓存。但根据查询,它可以提高性能。