我看到a few articles here尝试绑定计算字段,但我的首选解决方案; getComponent对我不起作用。我宁愿没有隐藏"真实"领域。这就是我所拥有的。计算的增值税税率百分比字段,称为VP
<xp:text escape="true" id="VP" value="#{FInvoiceDoc.VP}" style="text-align:right">
<xp:this.converter>
<xp:convertNumber pattern="0.00"></xp:convertNumber>
</xp:this.converter>
</xp:text>
以下是我设置此字段值的计算之一;
XSP.getElementById("#{id:VP}").innerHTML = tmp.toFixed(2);
tmp正确计算,VP在页面上显示正确的预期值。
然后在我的querySaveDocument事件中,我执行以下操作
var VP = getComponent("VP").getValue();
FInvoiceDoc.replaceItemValue("VP",VP);
以及存储的内容是Null值。我甚至通过执行&#34;打印(VP)&#34;确认VP变量为空。设置VP变量然后检查日志后命令。我必须成为我失踪的东西。
答案 0 :(得分:4)
在页面提交时,您不会将计算文本字段的值返回给服务器,因为它是只读的。
您正在寻找可以解决的问题:
前两点已经解决了您的问题。
您可以通过添加输入文本字段“VPdoc”来实现第三点,该字段绑定到文档的字段“VP”并隐藏style="display:none"
。
<xp:inputText
id="VPdoc"
value="#{FInvoiceDoc.VP}"
style="display:none">
<xp:this.converter>
<xp:convertNumber pattern="0.00"></xp:convertNumber>
</xp:this.converter>
</xp:inputText>
在提交时,使用提交按钮中的以下CSJS代码将当前值(innerHTML)从计算文本字段“VP”复制到输入文本字段“VPdoc”:
<xp:this.script><![CDATA[
XSP.getElementById("#{id:VPdoc}").value =
XSP.getElementById("#{id:VP}").innerHTML
]]></xp:this.script>
这样,在客户端设置为字段“VP”的值将保存到文档中。
答案 1 :(得分:0)
您没有指定值,而是用某些html代码替换html表示。有了它,你只需打破元素和那种&#34;转换&#34;这是一个愚蠢的div(抱歉,不知道如何更好地解释)......
永远不要乱用前端:元素绑定到文档中的项目。修改该值,表示它的元素将代表更改。
并且:你不需要querysavedocument中的那些代码行来保存值...这将自动完成,这是什么绑定(元素的value属性)是...
答案 2 :(得分:0)
也许,您使用
而不是操纵innerHTMLgetComponent("VP").setValue(tmp.toFixed(2));
那会有用吗?您正在设置组件的值,我认为......