ModalPopupExtender确定按钮单击事件不触发?(ModalPopupExtender

2019-07-18 02:28发布

我有一个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>

Answer 1:

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。



Answer 2:

看来,被用作确定或取消按钮上ModalPopupExtender按钮不能有一个click事件。 我测试了这一点通过消除

OkControlID="ModalOKButton"

从ModalPopupExtender标签,并单击按钮火灾。 我需要找出另一种方式将数据发送到服务器。



Answer 3:

这也可能是按钮需要具有的CausesValidation =“假”。 这为我工作。



Answer 4:

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

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


Answer 5:

投入按钮,控制属性“UseSubmitBehavior =假”。



Answer 6:

以前的答案都不为我工作。 我呼吁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>   


Answer 7:

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

我已经看到了两件事情引起的单击事件不火:
1.你必须删除OKControlID(如其他人所说的)
2.如果您使用的字段验证你应该添加按钮的CausesValidation =“假”。

这两种情况都表现得同样的方式给我。



Answer 8:

我已经找到一种方法来验证modalpopup没有回发。

在ModalPopupExtender我设置OnOkScript到的功能,例如ValidateBeforePostBack(),然后我打电话Page_ClientValidate因为我想验证组的功能,做一个检查,如果失败,保持modalpopup表现。 如果通过,我叫__doPostBack

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


文章来源: ModalPopupExtender OK Button click event not firing?