文本控件中新计算控件中的计算

时间:2012-10-12 10:48:01

标签: orbeon

我正在Orbeon表单构建器中开发一个eform。我在这里使用转发器(新的重复)控件。在该控件中有许多行文本控件。我想用用户将在这些控件中插入的值进行一些计算。假设两列有“项目数”和“联合价格”。其中有很多行,即用户将动态插入值。

此转发器控件旁边是一个文本控件,其中必须显示总金额而不显示任何按钮事件。

E.g。假设一个转发器结构就像一张桌子:

column name(Number of items---unit price)
 first value(1 ----100)
 second value(5----200)

总量必须在文本控件上显示为1100.网格数量可能会增加,具体取决于用户(此处为2)。

1 个答案:

答案 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>

浏览器输出:

enter image description here

如果您正在使用表单构建器,您可以选择结果表达式并使用绑定定义的calculate属性。

表达式:

sum(
    for $i in instance('form-instance')/sale
        return $i/number-of-units * $i/unit-price
    )                                           

祝你好运!