我有一张用 xforms:repeat 元素制作的表格。
1)当我第一次运行表单时,所有字段和计算都是预期的,当在下拉菜单中选择默认项目时。
下拉选项会更改重复元素的字段(来自xpath表达式)。
2)当我更改下拉列表的值时,它会保留输入先前计算的值,它们不会更新/重新计算!
3)但很奇怪,如果我重新选择Empty Selection并重新选择一个SelectItem,那么所有的计算都可以正常工作!
因此,每当我选择EmptyItem然后选择一个Item时,计算就会按预期工作!
当下拉菜单的值发生变化时,我想直接重新计算重复的数据!
...
<xf:repeat ref="instance('fr-form-instance')/Items">
...
<xf:action ev:event="xforms-enabled xxforms-iteration-moved">
<xf:setvalue ref="(//Item)[xxf:repeat-position()]/TotalCredit" value="someCalculationHere"/>
<xf:setvalue ref="(//Item)[xxf:repeat-position()]/TotalContingent" value="someCalculationHere"/>
<xf:recalculate model="fr-form-model"/>
</xf:action>
...
在默认选项中(在我的情况下,第一个选项,所有都是预期的)。
但如果我选择其他东西,它会保留以前的值!
答案 0 :(得分:1)
您可以通过收听事件和设置值来实现此功能,但我强烈建议您使用计算。使用计算更具说明性(或者有些人可能会说“像Excel一样”),并且它确保在必要时进行计算,而不必确保您正在收听适当的事件。
从表单的外观来看,它似乎可能是使用Form Builder创建的。如果是这种情况,您只需将计算放入控制设置对话框的公式选项卡中计算值。