2013-05-14 5 views
0

중첩 반복 컨트롤 집합이있는 상황이 있습니다. 대화 상자를 닫은 후 반복 컨트롤의 선택한 부분 만 새로 고칠 수 있습니다.XPage의 중첩 반복 컨트롤

dialog1 구성 요소 대화 상자의 이름과 repeat1입니다 dialog1.hide("repeat1");

는 반복의 구성 요소 이름 : 그래서 같은 대화 상자의 숨기기 방법에서 매개 변수로 갱신 할 수있는 요소를 지정할 수 있습니다 컨트롤을 새로 고칩니다.

최상위 레벨을 새로 고치면 모든 하위 레벨이 새로 고쳐집니다. 두 번째 레벨을 새로 고치면 레벨 2 반복 컨트롤의 첫 번째 발생 만 새로 고쳐집니다. 마찬가지로 세 번째 수준을 새로 고치면 세 번째 수준의 첫 번째 항목 만 새로 고쳐집니다.

두 번째 수준의 반복 컨트롤이나 세 번째 수준의 반복 컨트롤 만 새로 고치는 방법이 없습니다. 누구든지이 행동을 이해합니까?

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"> 
    <xp:br></xp:br> 
    <xp:panel id="panel1"> 
     <xp:button value="Label" id="button3"> 
      <xp:eventHandler event="onclick" submit="true" 
       refreshMode="partial" refreshId="dialog1"> 
       <xp:this.action><![CDATA[#{javascript:getComponent("dialog1").show();}]]></xp:this.action> 
      </xp:eventHandler> 
     </xp:button> 
     <xp:br></xp:br> 
     <xp:text escape="true" id="computedField4" value="#{javascript:@Now()}"> 
      <xp:this.converter> 
       <xp:convertDateTime type="both"></xp:convertDateTime> 
      </xp:this.converter> 
     </xp:text> 
     <xp:repeat id="repeat1" rows="30" var="rowdata" style="border:1px solid red" 
      repeatControls="true" removeRepeat="true"> 
      <xp:this.value><![CDATA[#{javascript:[1, 2, 3]}]]></xp:this.value> 
      <xp:text escape="true" id="computedField1" value="#{javascript:rowdata}"> 
       <xp:this.converter> 
        <xp:convertNumber type="number" integerOnly="true"> 
        </xp:convertNumber> 
       </xp:this.converter> 
      </xp:text> 
      &#160;-&#160; 
      <xp:text escape="true" id="computedField7" value="#{javascript:@Now()}"> 
       <xp:this.converter> 
        <xp:convertDateTime type="both"></xp:convertDateTime> 
       </xp:this.converter> 
      </xp:text> 
      <xp:br></xp:br> 
      <xp:repeat id="repeat2" rows="30" var="rowdata" 
       style="margin:1em; border:1px solid green" repeatControls="true" 
       removeRepeat="true"> 
       <xp:this.value><![CDATA[#{javascript:["a", "b", "c"]}]]></xp:this.value> 
       <xp:text escape="true" id="computedField2" value="#{javascript:rowdata}"> 
        <xp:this.converter> 
         <xp:convertNumber type="number" integerOnly="true"> 
         </xp:convertNumber> 
        </xp:this.converter> 
       </xp:text> 
       &#160;-&#160; 
       <xp:text escape="true" id="computedField5" value="#{javascript:@Now()}"> 
        <xp:this.converter> 
         <xp:convertDateTime type="both"></xp:convertDateTime> 
        </xp:this.converter> 
       </xp:text> 
       <xp:br></xp:br> 
       <xp:repeat id="repeat3" rows="30" var="rowdata" 
        style="margin:1em; border:1px solid orange" repeatControls="true" 
        removeRepeat="true"> 
        <xp:this.value><![CDATA[#{javascript:[1, 2, 3]}]]></xp:this.value> 
        <xp:text escape="true" id="computedField3" value="#{javascript:rowdata}"> 
         <xp:this.converter> 
          <xp:convertNumber type="number" integerOnly="true"> 
          </xp:convertNumber> 
         </xp:this.converter> 
        </xp:text> 
        &#160;-&#160; 
        <xp:text escape="true" id="computedField6" value="#{javascript:@Now()}"> 
         <xp:this.converter> 
          <xp:convertDateTime type="both"></xp:convertDateTime> 
         </xp:this.converter> 
        </xp:text> 
        <xp:br></xp:br> 
       </xp:repeat> 
      </xp:repeat> 
     </xp:repeat> 
    </xp:panel> 
    <xe:dialog id="dialog1" title="Dialog box"> 
     <xp:panel> 
      <xe:dialogButtonBar id="dialogButtonBar1"> 
       <xp:panel> 
        <xp:button value="OK - Refresh repeat1" id="button1"> 
         <xp:eventHandler event="onclick" submit="true" 
          refreshMode="complete"> 
          <xp:this.action><![CDATA[#{javascript:getComponent("dialog1").hide("repeat1")}]]></xp:this.action> 
         </xp:eventHandler> 
        </xp:button> 
        <xp:button value="OK - Refresh repeat2" id="button4"> 
         <xp:eventHandler event="onclick" submit="true" 
          refreshMode="complete"> 
          <xp:this.action><![CDATA[#{javascript:getComponent("dialog1").hide("repeat2")}]]></xp:this.action> 
         </xp:eventHandler> 
        </xp:button> 
        <xp:button value="OK - Refresh repeat3" id="button2"> 
         <xp:eventHandler event="onclick" submit="true" 
          refreshMode="complete"> 
          <xp:this.action><![CDATA[#{javascript:getComponent("dialog1").hide("repeat3")}]]></xp:this.action> 
         </xp:eventHandler> 
        </xp:button> 
       </xp:panel> 
      </xe:dialogButtonBar> 
     </xp:panel> 
    </xe:dialog> 
</xp:view> 

답변

1

은 당신이 반복 내부 패널 (또는 결국 사용자 지정 컨트롤)을 넣어 생각 대신에 반복을 대상으로 패널을 대상으로하게한다. 당신의 반복 내부

는 로컬 ID를 (사람을) 추가 할 수 있습니다 : 거기에 당신을 도울 수있는 예제가 있습니다 로컬 JS 객체로 변환하므로 모든 것을 제어 할 수 있습니다. 어떻게 진행되는지 알려주세요.