2013-05-29 56 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