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" /> <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(); } }
希望这可以帮助。