2008-09-27 10 views
42

나는 UpdatePanel 안에 Button을 가지고있다. 버튼은 ModalPopupExtender의 OK 버튼으로 사용됩니다. 어떤 이유로 버튼 클릭 이벤트가 발생하지 않습니다. 어떤 아이디어? 내가 놓친 게 있니?ModalPopupExtender 확인 버튼 클릭 이벤트가 실행되지 않습니까?

<asp:updatepanel id="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <cc1:ModalPopupExtender ID="ModalDialog" runat="server" 
      TargetControlID="OpenDialogLinkButton" 
      PopupControlID="ModalDialogPanel" OkControlID="ModalOKButton" 
      BackgroundCssClass="ModalBackground"> 
     </cc1:ModalPopupExtender> 
     <asp:Panel ID="ModalDialogPanel" CssClass="ModalPopup" runat="server"> 
      ... 
      <asp:Button ID="ModalOKButton" runat="server" Text="OK" 
         onclick="ModalOKButton_Click" /> 
     </asp:Panel> 
    </ContentTemplate> 
</asp:updatepanel> 

답변

52
영문

<ajax:ModalPopupExtender runat="server" ID="modalPop" 
      PopupControlID="pnlpopup" 
      TargetControlID="btnGo" 
       BackgroundCssClass="modalBackground" 
      DropShadow="true" 
      CancelControlID="btnCancel" X="470" Y="300" /> 


//Codebehind  
protected void OkButton_Clicked(object sender, EventArgs e) 
    { 

     modalPop.Hide(); 
     //Do something in codebehind 
    } 

그리고 OkControlID으로 확인 버튼을 설정하지 마십시오.

+1

당신 것이 맞습니다. – aceinthehole

9

ModalPopupExtender에 대한 확인으로 사용하거나 버튼을 취소하는 버튼을 클릭 이벤트를 가질 수 없습니다 것으로 보인다. 나는 ModalPopupExtender 태그에서

을 제거하고 단추를 누르면 실행됩니다. 데이터를 서버로 보내는 또 다른 방법을 찾아야합니다.

6
난 그냥 이것에 대한 솔루션을 찾고 있었다

은 방금 내가 가진이 속성을 제거하는 제어 화재에 이벤트하려는 경우 OkControlID가 컨트롤에 할당 할 수 없습니다 것으로 보인다

:) 모든 것이 다시 작동합니다. (작업)

내 코드 : 이전 답변

<asp:Panel ID="pnlResetPanelsView" CssClass="modalPopup" runat="server" Style="display:none;"> 
    <h2> 
     Warning</h2> 
    <p> 
     Do you really want to reset the panels to the default view?</p> 
    <div style="text-align: center;"> 
     <asp:Button ID="btnResetPanelsViewOK" Width="60" runat="server" Text="Yes" 
      CssClass="buttonSuperOfficeLayout" OnClick="btnResetPanelsViewOK_Click" />&nbsp; 
     <asp:Button ID="btnResetPanelsViewCancel" Width="60" runat="server" Text="No" CssClass="buttonSuperOfficeLayout" /> 
    </div> 
</asp:Panel> 
<ajax:ModalPopupExtender ID="mpeResetPanelsView" runat="server" TargetControlID="btnResetView" 
    PopupControlID="pnlResetPanelsView" BackgroundCssClass="modalBackground" DropShadow="true" 
    CancelControlID="btnResetPanelsViewCancel" /> 
2

없음은 나를 위해 일했다. OnOkScript 이벤트에서 버튼의 포스트 백을 호출했습니다.

<div> 
    <cc1:ModalPopupExtender PopupControlID="Panel1" 
     ID="ModalPopupExtender1" 
     runat="server" TargetControlID="LinkButton1" OkControlID="Ok" 
     OnOkScript="__doPostBack('Ok','')"> 
    </cc1:ModalPopupExtender> 

    <asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton> 
</div>   


<asp:Panel ID="Panel1" runat="server"> 
    <asp:Button ID="Ok" runat="server" Text="Ok" onclick="Ok_Click" />    
</asp:Panel> 
+0

ModalPopupExtender에서 OKControlID를 제거하면 버튼이 정상적으로 다시 게시됩니다. 이벤트에서 ModalPopupExtender.Hide()를 호출하여 팝업을 숨길 수 있습니다. –

7

은 또한 버튼 CausesValidation = "false"로 가질 필요가있을 수 있습니다. 그건 나를 위해 일했습니다.

+1

OMG, 그게 효과가있어. 내 문제는 OK 버튼과 관련이 없었지만 일반적인 이전 버튼 클릭은 제출하지 않았습니다. – DOK

+0

CausesValidation이 "true"일 필요가있을 때는 어떻습니까? "거짓"으로 설정하면 한 가지 문제가 해결되지만 다른 문제가 발생합니다 ... –

+0

이 작업은 저에게 효과적이지만 그 이유는 무엇입니까? – user1003916

4

Button에 삽입 - 속성 "UseSubmitBehavior = false"를 제어하십시오.

3

종종 빈 레이블을 TargetControlID로 사용합니다. 전의. <asp:Label ID="lblghost" runat="server" Text="" />

내가 클릭 이벤트를하지 화재의 원인이 두 가지 본 적이

:
1. 당신이 (다른 언급이) 당신이 CausesValidation을 추가해야합니다 유효성 검사기 필드를 사용하는 경우
2. OKControlID를 제거해야 = 버튼에 "거짓".

두 시나리오 모두 나를 위해 동일한 방식으로 작동합니다.

1

게시판없이 modalpopup의 유효성을 검사하는 방법을 찾았습니다.

ModalPopupExtender에서 OnOkScript를 ValidateBeforePostBack() 함수로 설정 한 다음 원하는 유효성 검사 그룹에 대해 Page_ClientValidate를 호출하는 함수에서 확인을 수행하고 실패하면 modalpopup을 계속 표시합니다. 통과하면 __doPostBack으로 전화합니다.

function ValidateBeforePostBack(){ 
    Page_ClientValidate('MyValidationGroupName'); 
    if (Page_IsValid) { __doPostBack('',''); } 
    else { $find('mpeBehaviourID').show(); } 
} 

희망이 있습니다.