문제

UpdatePanel 안에 버튼이 있습니다.이 버튼은 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>
도움이 되었습니까?

해결책

ASPX

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

OK 버튼을 OKControlID로 설정하지 마십시오.

다른 팁

modalpopupextender의 OK 또는 취소 버튼으로 사용되는 버튼은 클릭 이벤트를 가질 수없는 것으로 보입니다. 나는 이것을 제거하여 이것을 테스트했다

OkControlID="ModalOKButton"

modalpopupextender 태그에서 버튼을 클릭하면 발생합니다. 데이터를 서버로 보내는 다른 방법을 알아 내야합니다.

또한 버튼에 필요한 것일 수도 있습니다. againesvalidation = "false". 그것은 나를 위해 일했다.

나는 단지 이것에 대한 해결책을 찾고 있었다 :)

당신이 가질 수없는 것 같습니다 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" />

버튼 제어에 "useubmitbehavior = false"속성을 넣습니다.

이전 답변 중 어느 것도 저에게 도움이되지 않았습니다. 나는 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>   

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

클릭 이벤트가 발생하지 않는 두 가지를 보았습니다.
1. OKControlID를 제거해야합니다 (다른 사람들이 언급 한 것처럼)
2. 필드 유효성 검사기를 사용하는 경우 버튼에 ageesValidation = "false"를 추가해야합니다.

두 시나리오는 나에게도 같은 방식으로 행동했습니다.

포스트백 없이 모달 팝업의 유효성을 검사하는 방법을 찾았습니다.

ModalPopupExtender에서 OnOkScript를 ValidateBeforePostBack()과 같은 함수로 설정한 다음 함수에서 원하는 유효성 검사 그룹에 대해 Page_ClientValidate를 호출하고 검사를 수행한 후 실패하면 모달 팝업을 계속 표시합니다.합격하면 전화해 __doPostBack.

function ValidateBeforePostBack(){ 
     Page_ClientValidate('MyValidationGroupName'); 
     if (Page_IsValid) { __doPostBack('',''); } 
     else { $find('mpeBehaviourID').show(); } 
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top