ModalPopupExtender确定button单击事件不发射?

我有一个UpdatePanel内的button。 该button正被用作ModalPopupExtender的OKbutton。 出于某种原因,button点击事件不会触发。 有任何想法吗? 我错过了什么吗?

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

并且不要将OKbutton设置为OkControlID。

看起来,用作ModalPopupExtender的OK或CANCELbutton的button不能有点击事件。 我通过删除的方法来testing这个

 OkControlID="ModalOKButton" 

从ModalPopupExtender标记,并点击button点击。 我需要找出另一种方式将数据发送到服务器。

也可能是该button需要CausesValidation =“false”。 这对我有效。

我只是在寻找一个解决scheme:)

看来你不能让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" /> 

放入button – 控制属性“UseSubmitBehavior = false”。

我经常使用空白标签作为TargetControlID。 恩。 <asp:Label ID="lblghost" runat="server" Text="" />

我已经看到两件事情导致点击事件不起火:
1.你必须删除OKControlID(正如其他人所提到的)
2.如果你正在使用字段validation器,你应该在button上添加CausesValidation =“false”。

这两种情况对我来说都是一样的。

没有以前的答案为我工作。 我调用OnOkScript事件button的回发。

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

我find了一种方法来validation一个没有回传的modalpopup。

在ModalPopupExtender中,我将OnOkScript设置为一个函数,例如ValidateBeforePostBack(),然后在函数中为我所需的validation组调用Page_ClientValidate,如果失败,请保持modalpopup显示。 如果它通过,我打电话__doPostBack

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

希望这可以帮助。