我想知道在执行部分更新之前是否有办法隐藏Panel内的View?
基本上,我在自定义控件的Panel中有一个View,面板设置为部分更新。部分更新元素/ ID是按钮4,这是我的屏幕截图上的蓝色按钮。点击该按钮后,我想显示下面面板内的视图。
答案 0 :(得分:2)
你的意思是,viewPanel应该被隐藏,只有在点击按钮后才会显示?
在这种情况下,您可能会尝试将viewPanel的呈现属性绑定到requestScope变量,该变量是通过按钮的代码设置的:
一个。将scope-var(“showContainer”)预先设置为false
,例如通过beforePageLoad事件
湾要隐藏/显示的元素在另一个面板内(id =“outerContainer”)
C。内部面板(id =“innerContainer”)将其呈现属性绑定到范围var,因此最初它不会呈现为
d。 button将var设置为true
并在outerContainer上执行部分刷新>> id.innerContainer现在呈现
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.beforePageLoad><![CDATA[#{javascript:requestScope.put("showContainer", false)}]]></xp:this.beforePageLoad>
<xp:button
value="Do something"
id="button1">
<xp:eventHandler
event="onclick"
submit="true"
refreshMode="partial"
refreshId="outerContainer">
<xp:this.action><![CDATA[#{javascript:requestScope.put("showContainer", true)}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:panel id="outerContainer">
<xp:panel id="innerContainer">
<xp:this.rendered><![CDATA[#{javascript:requestScope.get("showContainer")}]]></xp:this.rendered>
<xp:label
value="something inside the container"
id="label1">
</xp:label>
</xp:panel>
</xp:panel>
</xp:view>
requestScope可能不是您的用例的正确对象...
你的按钮代码也可以根据一些额外的逻辑设置范围var;它在全文搜索时做了类似的事情:结果面板包括结果文档列表只有在有任何点击时才会显示;如果没有找到任何内容,则相应的消息将被改为dsiplay(即呈现)。