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

How to create a display method that relies on two other display methods?

我有一个header/lines类型的object(想想SalesTable/PurchTable),在header上我有两种计算显示方法,"total qty"和"total invoiced".

我想加个简单的显示说"Fully Invoiced",就是returns:

的显示方式

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

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

有没有办法制作一个使用缓存值的表单方法,这样我就不必调用额外的计算,也不必创建 table 列?

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

您可以在 table 上定义显示方法并使用 existing caching mechanism。您还必须在 table 上定义其他两种显示方法 totalQtytotalInvoiced。请注意,这仍然会导致对 totalQtytotalInvoiced.

进行一些不必要的调用

另一种方法是在表单中实现您自己的缓存机制,例如使用包含 RecId 和缓存值的映射(请参阅 Caching display methods on a form datasource 以获得 example/tutorial)。但是如果性能问题更多的是理论问题而不是实际问题,我不会推荐这种方法。

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