ModalPopupExtender Bouton OK cliquez sur l'événement pas de tir?

j'ai un Bouton à l'intérieur d'un UpdatePanel. Le bouton est utilisé comme le bouton OK pour un ModalPopupExtender. Pour une raison quelconque, l'événement de clic de bouton ne démarre pas. Des idées? Ai-je raté quelque chose?

<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>
42
demandé sur Johnno Nolan 2008-09-27 04:38:17

8 réponses

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
    }

et ne positionnez pas le bouton OK comme OkControlID.

52
répondu 2009-07-22 17:23:37

il semble qu'un bouton qui est utilisé comme bouton OK ou CANCEL pour un ModalPopupExtender ne peut pas avoir un événement de clic. J'ai testé en supprimant l'

OkControlID="ModalOKButton"

à partir de la ModalPopupExtender tag, et cliquez sur le bouton des feux. Je dois trouver un autre moyen d'envoyer les données au serveur.

9
répondu Kyle Trauberman 2008-09-27 01:00:11

Il se pourrait aussi que le bouton doit avoir CausesValidation= "false". Qui a fonctionné pour moi.

8
répondu Johan Leino 2009-06-10 12:18:59

je viens chercher une solution pour cela :)

il semble que vous ne pouvez pas avoir OkControlID assignez à un contrôle si vous voulez que le contrôle déclenche un événement, en enlevant simplement cette propriété j'ai tout fonctionne à nouveau.

mon code (de travail):

<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" />
6
répondu balexandre 2008-12-21 00:00:47

mettre dans le bouton-Contrôler L'attribut "UseSubmitBehavior=false".

4
répondu Stefan Weiss 2010-02-12 15:49:41

j'utilise souvent une étiquette vierge comme la TargetControlID. ex. <asp:Label ID="lblghost" runat="server" Text="" />

j'ai vu deux choses qui causent l'événement click déclenche pas:

1. vous devez supprimer les OKControlID (comme d'autres l'ont mentionné)

2. Si vous utilisez des validateurs de champ, vous devez ajouter CausesValidation="false" sur le bouton.

Les deux scénarios se sont comportés de la même façon pour moi.

3
répondu user519205 2010-11-24 18:09:45

Aucune des réponses précédentes a fonctionné pour moi. J'ai appelé le postback du bouton sur l'événement 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>   
2
répondu Johnno Nolan 2009-01-28 15:17:16

j'ai trouvé un moyen de valider un modalpopup sans une publication.

dans le ModalPopupExtender j'ai mis le OnOkScript à une fonction E. G ValidateBeforePostBack (), puis dans la fonction que j'appelle Page_ClientValidate pour le groupe de validation que je veux, faites une vérification et si elle échoue, gardez l'affichage modalpopup. Si ça passe, j'appelle __doPostBack.

function ValidateBeforePostBack(){ 
     Page_ClientValidate('MyValidationGroupName'); 
     if (Page_IsValid) { __doPostBack('',''); } 
     else { $find('mpeBehaviourID').show(); } 
}
1
répondu Fandango68 2018-07-16 06:31:10