1.横向逻辑关系:单价、数量、金额三者之间有运算逻辑;数量、库存量、实际可用数三者间也有计算逻辑;
2.纵向逻辑关系:合计行;
3.在粗体列中任意输入数据,查看横向、纵向数据的变化;
注:也可以让合计行紧挨底边(不滚动):;   允许有多个合计行:


1.分析Treelist的XML描述文件,横向逻辑关系表达式就在<express>中, 这2句表达式是其关键:
<TreeList>
 <Properties editAble="true" rowHeight="22" addRowAble="true" totalBgColor="#ffff00">
  <expresses>
   <!-- 金额 = 单价 X 数量 -->
   <express>total=round(price*num, 2)</express>
   <!-- 单价 = 金额 / 数量 -->
   <express>price=round(total/num, 4)</express>
   ...(略)
为什么要写2句表达式呢? 那是因为第二句相当于是告诉硕正组件: 金额的变化将影响单价、而不是影响数量!

2.纵向的逻辑:合计表达式,在名为“total”的列的属性中:
...
<Col name="total" datatype="double" decimal="2" totalExpress="=@sum">总价</Col>
...
上面出现的 round( )函数、@origin宏、@sum宏 的含义请参见“开发文档”之“公共内容”.


3.下面是更复杂的横向计算例子,有更多的列参与计算,表达式需要辅以 isAlone 属性才能正确计算, 请参考XML模板文件
其计算的逻辑关系为:
  总金额 = 含税单价 X 数量
  未税单价 = 含税单价 / (1+税率)
这4个列,任何一个列的变化都会影响到其它列, "isAlone" 属性的含义为右侧列的输入变化单独影响左侧列:
<expresses>
 <!-- 含税单价、未税单价、数量 变化将影响 总金额 -->
 <express isAlone="true">总金额 = 含税单价 * 数量</express>
 <express isAlone="true">总金额 = 未税单价 * (1+税率) * 数量</express>
 <!-- 总金额、数量 变化将影响 含税单价、未税单价 -->
 <express isAlone="true">含税单价 = 总金额 / 数量</express>
 <express isAlone="true">未税单价 = 总金额 / 数量 / (1+税率)</express>
 <!-- 两个单价会相互影响 -->
 <express isAlone="true">含税单价 = 未税单价 * (1+税率)</express>
 <express isAlone="true">未税单价 = 含税单价 / (1+税率)</express>
</expresses>


使用够简单吧!