0

私の状況は次のとおりです。

  1. 私はノードセットを持っており、それを介してテーブルにデータの一部を反復して入力します
  2. フィールドの1つ、私は要約したい

問題: ノードセットは他のフォームからのデータにアクセスするカスタム関数であるため、残念ながら合計メソッドを計算に使用できません。そして、それは物事を台無しにするようです。

解決策の私の考え: インスタンスを作成し、各反復でそれに値を追加できると思いました。そうすれば、そのデータにアクセスして、必要な計算を行うことができます。しかし、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つだけであると仮定すると、これらの行に沿ってコードを記述できます。

  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 に答える