xpages-从对话框中进行部分刷新似乎不适用于重复控件。从对话框外面它起作用

时间:2018-09-02 14:21:53

标签: xpages xpages-ssjs xpages-extlib

在xp:dialog中,我有一个用于加载后端数据并关闭对话框的按钮。

<xp:button value="Label" id="button1">
    <xp:eventHandler event="onclick"
        submit="true" refreshMode="partial" refreshId="rptContainer">
        <xp:this.action><![CDATA[#{javascript:
//load data. will not add the code for that but works fine;
viewScope.put("customers",promoBean.getCampaign().getCustomers());
getComponent("dlgCampaign").hide();}]]></xp:this.action>
    </xp:eventHandler>
</xp:button>

在事件中,我在xp:panel控件上设置了部分刷新,该控件包含与数据合并到viewScope的重复控件。

<xp:panel id="rptContainer">
<xp:repeat id="rptCustomers" var="obj" indexVar="index" value="#{viewScope.customers}">...

借助xpages调试工具栏,我看到对话框中按钮的viewScope正在更新。但是当对话框关闭时,更改在重复控件中不可见。

我在对话框外放置了一个按钮,该按钮仅执行部分刷新,然后重复控件呈现更改。

谁能解释我如何在对话框中更新重复控件?

我尝试了对话框的onHide属性并用作代码:

XSP.partialRefreshGet('#{id:rptContainer}');

但这没有效果。

我什至尝试对按钮事件进行完整的更新,但这也没有结果。

有人可以指导我如何正确进行吗?

1 个答案:

答案 0 :(得分:0)

当我通过SSJS关闭对话框时,我使用以下语法将其关闭:

<xp:button value="OK" id="btnOK">
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
        <xp:this.action><![CDATA[#{javascript:/*your processing code*/
             var dialogBox = getComponent('/*id of the dialog to close*/');
             dialogBox.hide('/*id of the component to refresh*/');}]]> 
       </xp:this.action>
    </xp:eventHandler>
</xp:button>

尽管刷新模式为“完成”,但仅“隐藏”方法中的组件被刷新。