在部分更新时隐藏?

时间:2014-02-06 18:42:14

标签: javascript xpages lotus-domino

我想知道在执行部分更新之前是否有办法隐藏Panel内的View?

基本上,我在自定义控件的Panel中有一个View,面板设置为部分更新。部分更新元素/ ID是按钮4,这是我的屏幕截图上的蓝色按钮。点击该按钮后,我想显示下面面板内的视图。

screenshot

1 个答案:

答案 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(即呈现)。