AX2012 使用SysComputedColumn来显示汇总字段而非使用display method
在窗体中使用display method来显示汇总信息比如:sum, count等信息的时候,窗体会非常的卡,体验非常不好。
一般这种情况要么拖拽加入数据源,要么使用SysComputedColumn(数据源是View的前提下)
SysComputedColumn
在视图【ReservationView】->【Methods】下新建一个method如下,来获取该预留Item的总申领量
public static server str totalPickedQtyStr() { str expression; expression = 'select sum(Weight) from PickListLine where PickListLine.InventTransId = ' + SysComputedColumn::returnField(tableStr(ReservationView), identifierStr(InventJournalTrans), fieldStr(InventJournalTrans, InventTransId)); return expression; }
在视图【ReservationView】-> 【Fields】下右键新建选择对应类型的Computed field,然后就可以作为数据源字段在窗体中使用拉,效果会比display method好太多。
在ViewMethod填入我们新建的方法就可
在实际使用过程中,要对totalPickedQty进行筛选,但是按照上面的写法,totalPickedQty是0的情况怎么样都无法筛选。所以需要将上面的方法修改为:
public static server str totalPickedQtyStr() { str expression; expression = 'select Weight = (case when sum(Weight) > 0 then sum(Weight) else 0 end) from PickListLine where PickListLine.InventTransId = ' + SysComputedColumn::returnField(tableStr(ReservationView), identifierStr(InventJournalTrans), fieldStr(InventJournalTrans, InventTransId)); return expression; }