我有一个标题/行类型的对象(想想SalesTable / PurchTable),在标题上我有两个计算的显示方法,“总数量”和“总发票”。
我想添加一个简单的显示“完全开票”,这是一种返回的显示方法:
return this.TotalQty() == this.TotalInvoiced();
问题是再次调用两个显示方法计算,这可能会对ListPages产生影响。
有没有办法制作一个使用缓存值的表单方法,所以我不必调用额外的计算而且我不必创建表列?
答案 0 :(得分:3)
据我所知,无法访问代码中显示方法缓存的值。
您可以在表格上定义显示方法并使用existing caching mechanism。您还必须在表格中定义其他两种显示方法totalQty
和totalInvoiced
。请注意,这仍会导致对totalQty
和totalInvoiced
进行一些不必要的调用。
另一种方法是通过例如在表单中实现自己的缓存机制。使用包含RecIds和缓存值的映射(有关示例/教程,请参阅Caching display methods on a form datasource)。但如果表现更像理论而不是实际问题,我不会推荐这种方法。
第三个选项可能是将totalQty
和totalInvoiced
中的查询合并到一个查询中,然后由fullyInvoiced
显示方法使用。这将在您的代码中引入一些冗余,您仍然需要在表上定义fullyInvoiced
以利用缓存。但根据查询,它可以提高性能。