部分关闭/打开部分刷新

时间:2013-05-29 12:58:08

标签: xpages lotus-notes

我的xpage中有一个部分,默认情况下是打开的。当我关闭该部分并进行部分刷新时,它会再次打开该部分。

是否有一种简单的方法可以防止这种情况。

1 个答案:

答案 0 :(得分:0)

呵呵,根据你的问题,我建立一个小的XPage来测试我在这里评论的内容是我得到的:

<xp:panel id="refresh">
    <xp:section id="section1" initClosed="false">
        <xp:panel id="innerRefresh">Section content</xp:panel>
    </xp:section>
</xp:panel>

<xp:button value="refresh inner div" id="button3">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial"
        refreshId="innerRefresh">
        <xp:this.action><![CDATA[#{javascript://refresh}]]></xp:this.action>
    </xp:eventHandler>
    </xp:button>

<xp:button value="refresh outer div" id="button4">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial"
        refreshId="refresh">
        <xp:this.action><![CDATA[#{javascript://refresh}]]></xp:this.action>
    </xp:eventHandler>
    </xp:button>

<xp:button value="refresh section" id="button1">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial"
        refreshId="section1">
        <xp:this.action><![CDATA[#{javascript://refresh}]]></xp:this.action>
    </xp:eventHandler></xp:button>

    <xp:button value="full refresh" id="button2">
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
        <xp:this.action><![CDATA[#{javascript://refresh}]]></xp:this.action>
    </xp:eventHandler></xp:button>

通过尝试以不同的方式刷新方法,我看到没有异常,如果我按下每个按钮一次或两次大约一秒钟,但如果你多次按下“刷新部分”按钮,该部分再次打开。这个效果适用于我的IE8和Firefox 19.0.2。我建议使用你的部分周围的面板/ div并刷新它而不是部分direkt。

<强>更新

试试这个,它会创建最多3个动态部分,每个部分都可以通过自己的按钮刷新,并且它们将保持关闭状态,

<xp:this.beforePageLoad><![CDATA[#{javascript:var sectioncount:java.util.Vector = @Explode("1,2,3",",");
viewScope.put("sectioncount",sectioncount);
viewScope.put("selectedSection", sectioncount)

}]]></xp:this.beforePageLoad>

<xp:checkBoxGroup id="checkBoxGroup1"
        value="#{viewScope.selectedSection}">
        <xp:this.defaultValue><![CDATA[#{javascript:return viewScope.get( "sectioncount" );}]]></xp:this.defaultValue>
        <xp:eventHandler event="onchange" submit="true"
            refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:// full update //partial update}]]></xp:this.action>
        </xp:eventHandler>
        <xp:selectItems>
            <xp:this.value><![CDATA[#{javascript:return viewScope.get( "sectioncount" );}]]></xp:this.value>
        </xp:selectItems>
</xp:checkBoxGroup>


    <xp:repeat id="repeat2" rows="30" var="varcollection"
        repeatControls="true">
        <xp:this.value><![CDATA[#{javascript:return viewScope.get( "sectioncount" );}]]></xp:this.value>
            <xp:panel>
                            <xp:this.rendered><![CDATA[#{javascript:var vec:java.util.Vector = viewScope.get( "selectedSection" );
return @IsMember(varcollection,vec);
}]]></xp:this.rendered>
                            <xp:button value="refresh this section:" id="button3">
                <xp:eventHandler event="onclick" submit="true" refreshMode="partial"
                    refreshId="refresh">
                    <xp:this.action><![CDATA[#{javascript://refresh}]]></xp:this.action>
                </xp:eventHandler>
                </xp:button>
                <xp:panel id="refresh">
                    <xp:section id="section1" initClosed="false">
                        <xp:panel id="innerRefresh">

                            <xp:text>
                                <xp:this.value><![CDATA[#{javascript:var date:java.util.Date = new java.util.Date;
return date.toTimeString()}]]></xp:this.value>
                            </xp:text></xp:panel>
                    </xp:section>                   
                </xp:panel>
                </xp:panel>
     </xp:repeat>