【问题标题】:Calculations inside a repeater (new repeat) control中继器(新重复)控件内的计算
【发布时间】:2012-10-19 11:14:47
【问题描述】:

Orbeon 表单构建器中的表单包含一个重复控件(新重复)。假设重复控件(新重复)的每行(或重复)上有三个文本控件。每行上的前两个文本控件包含数字值。我想在运行时将前两个文本控件的乘积带到第三个文本控件而没有任何事件。在运行时会有多个重复,即行可能会增加,但对于每个计算,在运行时都会反映出来并且对于每一行,前两个的产品必须在第三个上查看

我使用了以下代码:

if ($quantity castable as xs:double and $price castable as xs:double)
then $quantity * $price
else 'n/a'

当转发器控件中只有一行时,可以使用此 xpath 表达式。但是在添加新行时,即在运行时增加重复次数时,所有导致第三列控件更改为 else 值的结果 ("不适用”)。这仅适用于中继器控件的单行(新重复)。因为对于每次重复,必须分别计算每一行的值。

【问题讨论】:

    标签: xpath orbeon xforms


    【解决方案1】:

    假设这是您的节点,每行都重复

    <repeater>
        <quantity></quantity>
        <price></price>
        <product></product>
    </repeater>
    

    计算乘积的 Xpath 表达式为

    if(../quantity castable as xs:double and  ../price castable as xs:double) 
        then ../quantity * ../price
        else 'N/A'
    

    此表达式在用于 &lt;product&gt; 节点的计算时会产生每一行的乘积,并且不需要基于事件的操作,因为它已写入节点的绑定定义中。

    希望这能回答你所有的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 1970-01-01
      • 2010-10-27
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多