1

我正在 Orbeon 表单生成器中开发一个 eform。在这里,我使用的是中继器(新重复)控件。在该控件中有许多行文本控件。我想用用户将在这些控件中插入的值进行一些计算。假设有两列是“商品数量”和“单价”。其中有很多行,即用户将动态插入值。

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

例如,假设一个中继器结构就像一个表:

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

总金额必须在文本控件上显示为 1100。网格的数量可能会根据用户而增加(此处为 2)。

4

1 回答 1

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>

浏览器输出:

在此处输入图像描述

如果您使用的是表单生成器,您可以根据需要选择结果表达式并用于计算绑定定义的属性。

表达:

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

祝你好运!

于 2012-10-13T08:46:48.833 回答