在使用对话框更改基础值时,我在重复刷新时遇到问题。
这是包含重复的div:
<xp:div style="display:none;">
<xp:inputText id="linkages" value="#{procureDoc.Linkages}" multipleTrim="true" style="color:cornflowerblue;" multipleSeparator=";">
</xp:inputText>
</xp:div>
<xp:label value="Linkages:" id="linkageLabel" style="font-weight:bold;"></xp:label>
<xp:div id="linkageDiv">
<ul>
<xp:repeat id="linkagesDisplayRepeat" rows="30" var="rowData" indexVar="index" value="#{procureDoc.Linkages}">
<li>
<xp:text escape="true" id="computedField7">
<xp:this.value><![CDATA[#{javascript:rowData;}]]></xp:this.value>
</xp:text>
</li>
</xp:repeat>
</ul>
</xp:div>
这是对话框中的保存按钮。它碰巧坐在另一个自定义控件中,但我不认为这是问题所在。
<xp:button value="Save" id="saveButton">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.script><![CDATA[var linkageSelection = document.getElementById("#{id:linkageComboBox}").value;
var linkageUpload = "";
if (linkageSelection == "Use Category") {
linkageUpload = document.getElementById("#{id:linkageCategoryComboBox}").value;
}
else { linkageUpload = linkageSelection;}
var currentLinkages = document.getElementById("#{id:linkages}").value;
if ( currentLinkages == "" ) {
document.getElementById("#{id:linkages}").value = linkageUpload;
} else {
document.getElementById("#{id:linkages}").value = document.getElementById("#{id:linkages}").value + ";" + linkageUpload;
}
XSP.closeDialog('#{id:linkageDialog}');]]></xp:this.script>
</xp:eventHandler>
</xp:button>
我可以在XPage上放一个只刷新的按钮,它会使用对话框中选择的值刷新我的重复,但只是使用我的保存按钮不会这样做。
我确定我错过了一些简单的东西,但我无法看到它。
答案 0 :(得分:1)
您可以使用SSJS事件处理程序中的onComplete事件来调用CSJS脚本,如
XSP.partialRefreshGet("#{id:linkagesDisplayRepeat}");
刷新重复控件。
答案 1 :(得分:1)
客户端closeDialog()方法有第二个参数,表示要部分刷新的组件的ID。这基本上为你添加了onComplete。
SSJS对应方法使用组件的ID随后刷新作为唯一参数(显然,在关闭的组件上调用该方法,这是CSJS中的第一个参数)。