0

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

我使用了以下代码:

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

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

4

1 回答 1

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'

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

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

于 2012-10-19T13:21:24.000 回答