InfoPath通过XPath求和

 
        给重复节点求和并不是InfoPath最强大的功能,像自定义顺序。我们仅仅去创建一列重复表,然后对重复表中的一列进行求和。在一些时候这样的求和很难被用到,因为实际情况中中间结果(重复列总合)不需要被存储到数据源中,而我们去做的是动态的计算横向表中的求和值。这篇文章将给大家介绍怎样通过一些工作实现此项功能
 
让我们来简单的看一个例子:
 
通过利用方法来计算(price*quantity)的值,并把这个值付给lineItemTotal节点。然后我们创建一个最终汇总的内容,并在添加上来的表达式框中使用内置SUM功能
   Sum(my:group1 / my:lineItems / my:lineItemTotal)
瞧,我们完成了,他将汇总当前lineItemTotal里面的数据.
 
我们为什么在这里说这些简单东西的理由:当然是为了一些复杂的事件了.
 
如果中间值的结果(这个元素是我们假定的)并没有出现在我们的数据源中,怎么办?这种情况只可能出现在你在操作一个固定的schema或者你是一个XML的纯粹主义者,(至少我是 J),在你的XML中舍去那些没必要的中间计算值.
 
我们的目标仍然是这样的-但是数据源不同了.
 
原来的lineItemtotal将以一个表达式框的形式放在原来的文本框的位置上了;他的任务是计算简单的(price*quantity).
 
但是这样的计算结果怎么汇总到最后的”order total”中呢?你首先肯定会本能的去想利用sum(price*quantity),可这样做以后你会发现这个SUM XPATH功能其实仅仅计算出来的是一个节点上的值…
 
让我们一起回忆一下仅仅通过利用xPath来从头到尾取值的技术吧.在这里进行了详细的描述.让我们利用以下的方法来去给order total表达式付值:
 
   Sum(xdMath:Eval(my:lineItems,”my:price  *  my:quantity”))
 
表达式写出来了,相信大家有一些茫然,他是怎么工作的呢?让我们彻底的分析一下:
 
1)       Eval功能是来评估在横向元素price*quantity结果的表达式中的内容(相当于上面的 ineItemTotal), 并在这个虚拟的节点中返回一个值 .
2)       Sum 功能是取得这些虚拟节点中的值 , 去求和 , 然后给我们一个我们想要的值 .
 
我会给大家一个简单的表单摸版,里面有这个技术的执行,保存XSN到本地后打开.
 
这个方法工作在InfoPath 2003,2007,支持在浏览器中可能用到的表单摸版
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值