2015-06-28 2 views
0

У меня ajax modelpopup extender в моей веб-форме с CancelControlID Установлен в изображение imgClose. Когда я нажимаю на imgClose после того, как всплывающее окно было отображено, оно закрывает всплывающее окно. Но если я нажимаю на какие-либо элементы управления или выбираю некоторые элементы управления, для которых требуется postback, щелчок по изображению не будет ничего делать. Раньше у меня была кнопка CancelControlID для той же modelpopup. У этого также была та же проблема. Я обошел его с помощью метода codebehind OnClick="btnClose_Click" и скрывал модельный пакет.Close image on modelpopup не работает после обратной передачи

Для imgClose Я попытался использовать метод на стороне клиента, но он не работает. Любые идеи?

Вот мой modelpopup extenderimage control и javascript

<ajx:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="btnTest" 
       BackgroundCssClass="modalBackground" PopupControlID="divPreview" DropShadow="true" 
       CancelControlID="imgClose"> 


    <div runat="server" id="divPreview"> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:Panel ID="testDesign" runat="server" CssClass="boxdesignCustomerPopUp" Width="600px" Height="200px"> 
       <div> 
        <table> 
         <tr>            
          <td> 
           <center> 
            <strong> 
             <asp:Literal ID="PopupTitleBar" runat="server"></asp:Literal> 
            </strong> 
           </center> 
          </td> 
          <td style="vertical-align: top; float: right; position: absolute; top: 0px; right: 0px;">             
           <img id="imgClose" alt="Close" src="image/close-button-red.png" runat="server" onclick="closeModelPopup()" /> 
          </td> 
         </tr> 
        </table> 
       </div> 
       <div id="divMenu" style="float: left; width: 100px; height: auto">          
       </div> 
       <div id="divBody" style="border: 2px"> 
        <div id="divLedger" runat="server"> 
         <hr /> 
          <table> 
           <tr> 
            <td class="designtextfont">Has Ledger</td> 
            <td class="designtextbox"> 
             <asp:RadioButton ID="rdoLedgerYes" runat="server" AutoPostBack="True" GroupName="hasLedgerRdo" 
                Text="Yes" OnCheckedChanged="rdoLedgerYes_CheckedChanged" /> 
             <asp:RadioButton ID="rdoLedgerNo" runat="server" AutoPostBack="True" GroupName="hasLedgerRdo" 
                Text="No" OnCheckedChanged="rdoLedgerNo_CheckedChanged" /> 
            </td> 
           </tr> 
          </table> 
        </div> 
       </div> 
      </asp:Panel> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 


<script type="text/javascript"> 
    function closeModelPopUp() { 
     $find('ModalPopupExtender1').hide();   
    } 
</script> 

ответ

0

Попробуйте переместить кнопку imgClose в divPreviewUpdatePanel снаружи. Также вам не нужно onclick в imgClose, потому что ModalPopupExtender обрабатывает его, установив CancelControlID.

+0

У меня действительно есть imgClose в divPreview. Я обновил сообщение ... поэтому вы можете ссылаться на него ... Причина, по которой я должен был установить onclick, заключалась в том, что imgClose не работает после того, как есть обратная передача. divMenu и divBody содержит несколько элементов управления, которые запускают различные функции обратной передачи. – TFrost

+0

Можете ли вы отредактировать сообщение и добавить кнопку, которая заставит работать imgClose? Я пробовал себя, и он работает здесь, но когда я открываю свой модальный, я не могу сделать обратную передачу, потому что есть оверлейный div, блокирующий всю страницу, кроме модального. – Carlos

+1

Извините, я попробовал что-то другое: переместил ваш imgClose за пределы UpdatePanel, но внутри divPreview. – Carlos

Смежные вопросы