2013-05-14 36 views
0

我有一种情况,我有一组嵌套的重复控件。我想要做的是在解除对话框后只能刷新重复控件的选定部分。我可以指定元件被刷新为像这样在对话框中的隐藏方法中的参数:XPages中的嵌套重复控件

dialog1.hide("repeat1");

其中dialog1是对话框的组件的名称,repeat1为重复的组件名称控制刷新。

如果我刷新顶层,则会刷新所有从属层。如果我刷新第二级,则只刷新第一级出现的第二级重复控制。同样,如果我刷新第三级,则只刷新第三级的第一次出现。

似乎没有明显的方式来刷新,比如说只有二级重复控件或三级重复控件。有没有人了解这种行为?

<?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> 

回答