0

我的情况如下:

  1. 我有一个节点集,通过它我迭代并用一些数据填充一个表
  2. 其中一个领域,我确实想总结一下

问题: 不幸的是,我不能使用 sum 方法进行计算,因为节点集是从其他形式访问数据的自定义函数。这似乎把事情搞砸了。

我对解决方案的想法: 我想,我可以创建一个实例,并在每次迭代中为其添加值。然后我就可以访问该数据并进行所需的任何计算。但我无法让 xforms:insert 工作。

简化版本如下所示:

            <xforms:repeat nodeset="(xxforms:si-source-forms('other_form'))">
              <!-- table here -->
              <xforms:insert
                 nodeset="instance('fr-form-instance')//positionen/position"
                 origin="instance('neue-position')"/>
            </xforms:repeat>

'neue-position' 实例包含对源表单中值的绑定:

  <xforms:bind id="neue-position-binds" nodeset="instance('neue-position')">
    <xforms:bind id="neue-position-bind" nodeset="position">
      <xforms:bind id="neue-position-summe-bind" nodeset="summe" name="summe" type="xforms:string" required="true" xxforms:default="xxforms:si-source-forms('other_form')//gesamtbetrag_ausgabe" />
    </xforms:bind>
  </xforms:bind>

但它并没有按预期工作,所以显然有问题。我会很感激任何提示。

4

1 回答 1

1

关于您的第一个代码段:

<xforms:insert>不会有任何影响。您在视图中,并且只有在附加到事件侦听器时才会运行操作。如果没有ev:listeneron <xforms:insert>(或围绕该插入的操作),它就不会运行。

关于对不在实例中的节点进行求和:

假设您的自定义函数返回的数据只有一个“总和”,您可以按照这些行编写代码:

  1. 将函数返回的节点序列存储在变量中<xf:var name="others" ref="xxforms:si-source-forms('other_form')"/>
  2. 在重复中使用该变量:(<xf:repeat ref="$others">顺便说一句,现在 XForms 正在标准化ref无处不在的使用,代替nodeset)。
  3. 做你的计算:<xf:var name="my-sum" ref="sum($others/path/to/values)"/>
  4. 最后,我想你想用 做点什么$my-sum,也许用<xf:output>.
于 2012-05-11T02:27:24.607 回答