2013-05-29 100 views
0

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

有没有一种简单的方法来防止这种情况。

+0

嗨像素,你怎么样定义的默认?通常情况下,即使您进行全面更新,该部分也不应该恢复到默认值。 –

+0

嗨,这正是我的问题。默认是关闭的,但是当我打开一个节并进行刷新时会再次关闭该节。这对于最终用户来说真的很烦人。 – Pudelduscher

回答

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> 

通过尝试刷新differen方式sction我看到了什么不寻常的,如果我按每个按钮一次或两次,间隔约一秒钟,但如果多次按下“刷新区段”按钮,该区段会再次打开。这种效果在我的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> 
+0

我的问题是,我必须刷新多个部分,部分的数量是动态可配置的,所以我不知道有多少部分。我需要一个很好的方法来设置这些部分的持续状态。 – Pudelduscher