我正在Orbeon表单构建器中开发一个eform。我在这里使用转发器(新的重复)控件。在该控件中有许多行文本控件。我想用用户将在这些控件中插入的值进行一些计算。假设两列有“项目数”和“联合价格”。其中有很多行,即用户将动态插入值。
此转发器控件旁边是一个文本控件,其中必须显示总金额而不显示任何按钮事件。
E.g。假设一个转发器结构就像一张桌子:
column name(Number of items---unit price)
first value(1 ----100)
second value(5----200)
总量必须在文本控件上显示为1100.网格数量可能会增加,具体取决于用户(此处为2)。
答案 0 :(得分:0)
为了找出总成本,我无法想出正常的计算技巧。所以我使用了一个非常小的XQuery来解决这个问题。
我不知道你是否正在“手工”使用表单构建器或Xforms编码,但我使用“手工”开发。下面是完整的Xforms代码,您可以在Orbeon Xforms Sandbox上运行它。
<xhtml:html xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:f="http://orbeon.org/oxf/xml/formatting"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<xhtml:head>
<xforms:model xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xs="http://www.w3.org/2001/XMLSchema" id="main-model">
<xforms:instance id="form-instance">
<form>
<sale>
<number-of-units>1</number-of-units>
<unit-price>100</unit-price>
</sale>
<sale>
<number-of-units>2</number-of-units>
<unit-price>500</unit-price>
</sale>
</form>
</xforms:instance>
</xforms:model>
</xhtml:head>
<xhtml:body>
<table>
<tr>
<td>
Total price:
</td>
<td>
<xforms:output value="sum(
for $i in instance('form-instance')/sale
return $i/number-of-units * $i/unit-price
)
" />
</td>
</tr>
</table>
</xhtml:body>
</xhtml:html>
浏览器输出:
如果您正在使用表单构建器,您可以选择结果表达式并使用绑定定义的calculate属性。
表达式:
sum(
for $i in instance('form-instance')/sale
return $i/number-of-units * $i/unit-price
)
祝你好运!