XPages:关闭时刷新面板的对话框
我有一个文档,其中包含一个评级自定义控件(xInvolve,非常好!)。在此应用程序中,管理员希望能够删除某个文档或所有文档的某些评级(故意评级错误、文档的新版本、文档的更正…) 我在一个对话框(扩展库对话框,而不是Dojo对话框)的视图中显示评级。在该对话框中,我有一个“全部删除”按钮。该按钮调用一个SSJS函数,该函数删除当前打开的文档的评级文档,但我想刷新显示评级的面板,因为它现在应该为空 到目前为止,我能够关闭对话框,但似乎无法刷新面板。以下是“全部删除”按钮的代码:XPages:关闭时刷新面板的对话框,xpages,xpages-ssjs,xpages-extlib,Xpages,Xpages Ssjs,Xpages Extlib,我有一个文档,其中包含一个评级自定义控件(xInvolve,非常好!)。在此应用程序中,管理员希望能够删除某个文档或所有文档的某些评级(故意评级错误、文档的新版本、文档的更正…) 我在一个对话框(扩展库对话框,而不是Dojo对话框)的视图中显示评级。在该对话框中,我有一个“全部删除”按钮。该按钮调用一个SSJS函数,该函数删除当前打开的文档的评级文档,但我想刷新显示评级的面板,因为它现在应该为空 到目前为止,我能够关闭对话框,但似乎无法刷新面板。以下是“全部删除”按钮的代码: PanelHe
PanelHeader是插入xRating控件的面板
我是否应该尝试将代码放入对话框的onClose事件中?我试过了,但没有得到更多的运气
谢谢,所以您可以使用客户端代码来实现这一点。我们就是这样做的:
<xp:executeScript>
<xp:this.script><![CDATA[#{javascript:var strClientCode = "$('#editDeliveryAddressDialog').modal('hide'); window.location.reload();"
view.postScript(strClientCode);}]]></xp:this.script>
</xp:executeScript>
希望有帮助。本
下面是一个使用RPC控件的解决方案。此控件允许您直接从客户端javascript调用服务器代码。我经常使用它来调用java方法,但没有使用它来调用库中的SSJS函数。我假设它也会起同样的作用
<xe:jsonRpcService id="jsonRpcService1" serviceName="myRPC"
pathInfo="rpc">
<xe:this.methods>
<xe:remoteMethod name="callDeleteAllRatings">
<xe:this.script><![CDATA[deleteAllRatings(universalID)}]]></xe:this.script>
<xe:this.arguments>
<xe:remoteMethodArg name="universalID" type="string" />
</xe:this.arguments>
</xe:remoteMethod>
</xe:this.methods>
</xe:jsonRpcService>
您将无法在RPC中使用getComponent,因此需要传递UNID。您可以在启动窗口时使用
将其传递给客户端。你会像现在一样关上窗户(我想)
要调用服务的方法,可以使用myRPC.callDeleteAllRatings(“Open ATM”,即“)再次,从客户端调用RPC
在我看来,一旦你了解了RPC可以为你做什么,你就会想知道没有它你是如何应付的。正如Mark在上面的评论中所建议的,你应该能够使用onHide属性。例如,如果要刷新服务器端id为panel1的面板
<xe:dialog id="dialog1" title="Example Dialog"
onHide=" XSP.partialRefreshGet('#{id:panel1}'); ">
这对我有用你能不能只做部分刷新?我用这样一个简单的对话框
<xp:button value="Save and Close" id="button2" styleClass="btn btn-primary">
<xp:eventHandler event="onclick"
submit="true" refreshMode="partial"
refreshId="panelRefresh"
disableValidators="true"
onComplete="$('#myModal').modal('hide');">
<xp:this.action><![CDATA[#{javascript:var value:string=getComponent("inputText1").value;
document1.replaceItemValue("modalTest",value)}]]>
</xp:this.action>
</xp:eventHandler>
</xp:button>
我打算建议使用RPC控件。您可以使用客户端代码直接调用服务器进程。它被称为“远程服务”,位于数据访问下的选项板中。这是非常有用的。史蒂夫,这不是一个坏主意,也许一个带例子的答案可能会对本有所帮助。@pipalia,还有本,我会想出一些办法的。给我几分钟。请尝试Pipalia的答案,看看它是否适用于您。查看ExtLib演示数据库:我认为(从我的头顶上看),您可以将控件的ID作为参数添加到对话框的隐藏方法中。当对话框关闭时,该控件将被刷新。Ben,我很好奇你使用了哪种解决方案。如果是这些答案中的一个,请接受适当的答案,或者如果您使用自己的方式固定,请添加答案。谢谢
<xp:button value="Save and Close" id="button2" styleClass="btn btn-primary">
<xp:eventHandler event="onclick"
submit="true" refreshMode="partial"
refreshId="panelRefresh"
disableValidators="true"
onComplete="$('#myModal').modal('hide');">
<xp:this.action><![CDATA[#{javascript:var value:string=getComponent("inputText1").value;
document1.replaceItemValue("modalTest",value)}]]>
</xp:this.action>
</xp:eventHandler>
</xp:button>