Orbeon XForms - HowTo:通过Trigger复制转发器字段的值

时间:2015-06-30 14:17:06

标签: xml orbeon xforms

我有一个XForm,它包含一个用于渲染表的转发器。表的每一行都有一个触发器。当触发器被激活时,我想获取当前行中我的表中一个单元格的值,并将该值复制到另一个实例

<xh:table class="dataTable">
    <xh:tr>
        <xh:th>Date</xh:th>
        <xh:th>Copy?</xh:th>
    </xh:tr>

    <xf:repeat nodeset="instance('fr-form-instance')/Pathology/*:TimeSeriesStructure[*:Type/*:TypeId='ALB']/*:DataPoint">
        <xh:tr>
            <xh:td>
               <xf:output ref="*:DateTime"/>
            </xh:td>
           <xh:td>
               <xf:trigger xxf:modal="true">
                    <xf:label>Select</xf:label>
                    <xf:action ev:event="DOMActivate">
                         <xf:setvalue bind="target-bind">
                            <xf:output ref="*:DateTime"/>
                         </xf:setvalue>
                    </xf:action>
               </xf:trigger>
           </xh:td>
      </xh:tr>
   </xf:repeat>
 </xh:table>

在这种情况下,我想将Date字段的值复制到由&#34; target-bind&#34;绑定的项目。当触发器被激活时。

目前(如上所述),现有值(通过&#34; target-bind&#34;绑定的元素)被删除,但新值(*:DateTime)不会被复制。

1 个答案:

答案 0 :(得分:0)

现在已经解决了。问题是setvalue部分中的target-bind。这意味着输出正在寻找名为DateTime的绑定的子节点。何时应该查看转发器正在渲染的节点。将它移到变量并以这种方式访问​​它解决了问题

<xh:table class="dataTable">
     <xh:tr>
    <xh:th>Date</xh:th>
    <xh:th>Copy?</xh:th>
</xh:tr>

<xf:repeat nodeset="instance('fr-form-instance')/Pathology/*:TimeSeriesStructure[*:Type/*:TypeId='ALB']/*:DataPoint">
    <xf:var name="itemVal" value="*:DateTime"/>        
    <xh:tr>
        <xh:td>
           <xf:output value="$itemVal"/>
        </xh:td>
       <xh:td>
           <xf:trigger xxf:modal="true">
                <xf:label>Select</xf:label>
                <xf:action ev:event="DOMActivate">
                     <xf:setvalue bind="target-bind" value="$itemVal" />
                </xf:action>
           </xf:trigger>
       </xh:td>
  </xh:tr>