如何刷新使用对话框更新的重复

时间:2015-08-08 21:24:22

标签: xpages

在使用对话框更改基础值时,我在重复刷新时遇到问题。

这是包含重复的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上放一个只刷新的按钮,它会使用对话框中选择的值刷新我的重复,但只是使用我的保存按钮不会这样做。

我确定我错过了一些简单的东西,但我无法看到它。

2 个答案:

答案 0 :(得分:1)

您可以使用SSJS事件处理程序中的onComplete事件来调用CSJS脚本,如

XSP.partialRefreshGet("#{id:linkagesDisplayRepeat}");

刷新重复控件。

答案 1 :(得分:1)

客户端closeDialog()方法有第二个参数,表示要部分刷新的组件的ID。这基本上为你添加了onComplete。

SSJS对应方法使用组件的ID随后刷新作为唯一参数(显然,在关闭的组件上调用该方法,这是CSJS中的第一个参数)。