2016-04-11 7 views
3

У меня есть тип объекта заголовка/линий (думаю, SalesTable/PurchaseTable), а в заголовке у меня два рассчитанных метода отображения: «total qty» и «total invoiced».Как создать метод отображения, который опирается на два других метода отображения?

Я хочу, чтобы добавить простой дисплей, который говорит: «Полностью INVOICED», которая представляет собой метод отображения, который возвращает:

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

Вопрос заключается в том, что снова вызывает два расчета метода отображения, который может быть производительность попадает на списки.

Есть ли способ сделать метод формы, который использует кешированные значения, поэтому мне не нужно вызывать дополнительные вычисления, и мне не нужно создавать столбец таблицы?

ответ

3

Насколько я знаю, нет способа получить доступ к значениям, которые были кэшированы для методов отображения в коде.

Вы можете определить способ отображения в таблице и использовать existing caching mechanism. Вы должны были бы определить другие два метода отображения totalQty и totalInvoiced на столе. Обратите внимание, что это все равно приведет к некоторым ненужным вызовам totalQty и totalInvoiced.

Другим способом было бы реализовать свой собственный механизм кеширования в форме, например. используя карту, содержащую значения RecIds и кеша (см. Caching display methods on a form datasource для примера/учебника). Но если производительность более теоретическая, чем практическая, я бы не рекомендовал этот подход.

Третьим вариантом может быть объединение запросов в totalQty и totalInvoiced в один запрос, который затем используется методом отображения fullyInvoiced. Это приведет к некоторой избыточности в вашем коде, и вам все равно придется определять fullyInvoiced на столе, чтобы использовать кеширование. Но в зависимости от запросов это может повысить производительность.

+0

Вот что я понял. Я надеялся, что смогу поместить AutoDec = Yes в два поля метода отображения, а затем поставить datamethod в самой сетке и, возможно, установить его равным field1.RealValue == field2.RealValue; –