我的一个好主意看起来比我最初想象的要少一些。
背景 - 我需要在其中一列中使用 DBLookups 对视图执行经典的重复控制解决方案。我需要对列进行总计,因此我决定使用 viewScope 变量来保存小计,并在计算重复控件的行时添加这些值。
理论上听起来不错,但由于某种原因,如果我在重复控件中使用计算字段,则该值被计算(并附加到小计)两次。我已经通过以下几行代码建立了这一点,在重复中使用了计算字段和编辑框,其中包含相同的代码:
<xp:text escape="true" id="computedField9">
<xp:this.value><![CDATA[#{javascript:
//some calculations, nothing to see here*
var subTotal = viewScope.get("valueColumnTotal");
viewScope.put("valueColumnTotal", subTotal + sumVals);
sessionScope.put("Testing", sessionScope.get("Testing") + "~" + sumVals);
return sumVals;
}]]></xp:this.value>
//converters and stuff, nothing to see here
</xp:text>
<xp:inputText id="inputText1">
<xp:this.value><![CDATA[#{javascript:
//Same as the computed field above
</xp:this.value>
</xp:inputText>
对于 1,2 和 3 的值,我的 sessionScope 变量显示 0~1~1~1~2~2~2~3~3~3,小计显示为 18 如果我删除文本框,我得到 0~ 1~1~2~2~3~3 小计 12
换句话说,我得到了计算字段的双值和编辑框的单值。我在那里也得到了一个零,我无法解释,但我假设这只是一个初始值,不需要担心。
我认为这可能是重复被某些东西刷新的情况,但我预计会有 1~2~3~1~2~3。
我猜我只是不了解何时计算计算字段的基本知识,但我很难过。我想我可以切换到编辑框,但我认为计算字段在这里更合适。
有人可以对此有所了解吗?