我最近有些头疼,部分刷新。
组合框在onChange事件上激活对面板的部分刷新(用于从该面板渲染字段):
<xp:comboBox value="#{Contr.txt_tipcontractcv}" id="txt_tipcontractcv1">
<xp:selectItems id="selectItems1">
<xp:this.value><![CDATA[#{javascript:return ""}]]></xp:this.value>
/xp:selectItems>
<xp:selectItems id="selectItems2">
<xp:this.value><![CDATA[#{javascript:@DbColumn(@DbName(),"SetupvwTipuriContracteC",1);}]]></xp:this.value>
</xp:selectItems>
<xp:eventHandler event="onchange" submit="true">
<xp:this.script><![CDATA[XSP.partialRefreshGet("#{id:FisaP}", {
});
]]> </xp:this.script>
</xp:eventHandler>
</xp:comboBox>
面板代码&amp;该领域:
<xp:panel id="FisaP">
<xp:label id="label4">
<xp:this.value><![CDATA[#{javascript:"Fisa contract "+ Contr.getItemValueString("txt_tipcontractcv1")}]]></xp:this.value>
<xp:this.rendered><![CDATA[#{javascript:
Contr.getItemValueString("txt_tipcontractcv1") == "Vanzare-Cumparare"
}]]></xp:this.rendered>
</xp:label>
</xp:panel>
但是,当我选择一个值时,部分刷新似乎被触发,但是立即组合框值为空 - 并且发生了xpage的总刷新,并且未显示面板中的字段。我错过了什么?
答案 0 :(得分:0)
你的onchange活动比你预期的要多得多:
我认为你想要运行你的CSJS,需要submit =“false”。
如果您想在onchange运行之前立即考虑浏览器的更改,请不要使用partialRefreshGet。而是使用:
<xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="FisaP" disableValidators="true">
</xp:eventHandler>
转换器仍在运行,因此,如果您放置,例如将文本转换为数字字段,它仍然会失败。