在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}');
但这没有效果。
我什至尝试对按钮事件进行完整的更新,但这也没有结果。
有人可以指导我如何正确进行吗?
答案 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>
尽管刷新模式为“完成”,但仅“隐藏”方法中的组件被刷新。