2017-09-14 31 views
0

我有一個無線電組,它有兩個值「OK」(默認)和「Log」。當選擇「Log」值時,將打開一個extlib對話框。我想要的是一種方法,如果對話框被取消,則將收音機組值設置回「OK」。收音機組位於自定義控制中,該控制位於難度進入的重複區域內。該對話框用於從調用xpage保存單獨的文檔。 這個概念在使用jquery設置數值回到「Ok」時使用單個廣播組模擬,但我無法從重複中獲取正確的組件ID。在x頁面取消對話框時更改元件值

感謝

<xp:view 
    xmlns:xp="http://www.ibm.com/xsp/core" 
    xmlns:xe="http://www.ibm.com/xsp/coreex" 
    xmlns:xc="http://www.ibm.com/xsp/custom"> 
    <xp:this.data> 
     <xp:dominoDocument 
      var="document1" 
      formName="frRegion"> 
     </xp:dominoDocument> 
    </xp:this.data> 
    <xp:this.resources> 
     <xp:script 
      src="js/jquery-3.1.1.min.js" 
      clientSide="true"> 
     </xp:script> 
     <xp:styleSheet href="/dynFields.css"></xp:styleSheet> 
    </xp:this.resources> 
    &#160; 
    <xp:br> 
    <p>TEST This</p></xp:br> 
    <xp:inputText id="inputText1" value="#{document1.fRegion}"></xp:inputText> 
    <xp:br></xp:br> 
    <xp:repeat 
     var="rownum" 
     indexVar="rowIndex"> 
     <xp:this.value><![CDATA[#{javascript:[1,2]}]]></xp:this.value> 
     <xc:ccDynRadioGroup 
      dialogEnable="true" 
      dataSource="#{javascript:document1}" 
      defaultValue="Ok"> 
      <xc:this.selectItems><![CDATA[#{javascript:"Ok|Ok,Log|Log"}]]></xc:this.selectItems> 
      <xc:this.fieldName><![CDATA[#{javascript:"C_"+rownum 

}]]></xc:this.fieldName> 
     </xc:ccDynRadioGroup> 
    </xp:repeat>  
    <xp:br></xp:br> 


    <xe:dialog id="dialog1"> 
     <xe:this.dojoAttributes> 
      <xp:dojoAttribute 
       name="disableCloseButton" 
       value="false"> 
      </xp:dojoAttribute> 
     </xe:this.dojoAttributes> 
     <xp:panel> 
      <xp:table> 
       <xp:tr> 
        <xp:td> 
         <xp:label 
          value="TEST" 
          id="label1"> 
         </xp:label> 
        </xp:td> 
        <xp:td></xp:td> 
       </xp:tr> 
       <xp:tr> 
        <xp:td> 
         <xp:button 
          value="DummySave" 
          id="button1"> 
          <xp:eventHandler 
           event="onclick" 
           submit="true" 
           refreshMode="complete"> 
           <xp:this.action><![CDATA[#{javascript:var c = getComponent("dialog1"); 
c.hide();}]]></xp:this.action> 
          </xp:eventHandler> 
         </xp:button> 
        </xp:td> 
        <xp:td> 
         <xp:button 
          value="Cancel" 
          id="button2"> 
          <xp:eventHandler 
           event="onclick" 
           submit="false"> 
           <xp:this.script><![CDATA[var v = "dialog1" 
if(v == "dialog1"){ 
    XSP.closeDialog("#{id:dialog1}"); 
    $(xId("#{id:rg_Insp}")+".RadioGroupD"+" [value=Ok]").prop("checked",true); 
} 

function x$(idTag, param){ //Updated 18 Feb 2012 
    idTag=idTag.replace(/:/gi, "\\:")+(param ? param : ""); 
    return($("#"+idTag)); 
} 

function xId(id){ 
id = id.replace(/:/gi, "\\:"); 
return "#"+id; 
}]]></xp:this.script> 
          </xp:eventHandler> 
         </xp:button> 
        </xp:td> 
       </xp:tr> 
      </xp:table> 
     </xp:panel> 
     <xp:eventHandler 
      event="onClose" 
      submit="false"> 
      <xe:this.script><![CDATA[//$(xId("#{id:rg_Insp}")+".RadioGroupD"+" [value=Ok]").prop("checked",true);]]></xe:this.script> 
     </xp:eventHandler> 
    </xe:dialog> 

    </xp:view> 

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view 
    xmlns:xp="http://www.ibm.com/xsp/core"> 
    <xp:radioGroup 
     id="rg_Insp" 
     value="#{compositeData.dataSource[compositeData.fieldName]}" 
     styleClass="RadioGroupD" defaultValue="#{javascript:compositeData.defaultValue}"> 
     <xp:selectItems> 
      <xp:this.value><![CDATA[#{javascript:@Explode(compositeData.selectItems,",")}]]></xp:this.value> 
     </xp:selectItems> 
     <xp:eventHandler 
      event="onchange" 
      submit="true" 
      refreshMode="complete"> 
      <xp:this.action><![CDATA[#{javascript:if(compositeData.dialogEnable){ 
    var v:string = getComponent("rg_Insp").getValue(); 
    if(v.equalsIgnoreCase("Log")){ 
     var d = getComponent("dialog1"); 
     d.show(); 
    } 
}}]]></xp:this.action> 
     </xp:eventHandler> 
    </xp:radioGroup> 
</xp:view> 
+0

你能提供你的源代碼嗎? – jreed

+0

這裏是一個模型代碼,我是jquery 3.1.1 –

回答

1

嘗試把重複內的對話框,因此,當你計算ID的對話框將在相同的「命名容器」

你可能會想:「我不想讓創建一千個對話框「,但不用擔心,只要在重複中沒有設置repeatControls =」true「,仍然只有一個對話框,但現在知道重複的當前迭代,所以應該選擇當前無線電組的正確ID