Question

J'ai un bouton dans un UpdatePanel. Le bouton est utilisé comme bouton OK pour ModalPopupExtender. Pour une raison quelconque, l'événement de clic de bouton ne se déclenche pas. Des idées? Est-ce que je manque 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>
Était-ce utile?

La solution

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 définissez pas le bouton OK sur OkControlID.

Autres conseils

Il semble qu'un bouton utilisé en tant que bouton OK ou ANNULER pour un ModalPopupExtender ne puisse pas avoir un événement de clic. J'ai testé cela en enlevant le

OkControlID="ModalOKButton"

à partir de la balise ModalPopupExtender, et le clic sur le bouton se déclenche. Je vais devoir trouver un autre moyen d'envoyer les données au serveur.

Il se peut également que le bouton ait besoin de CausesValidation = & "false &";. . Cela a fonctionné pour moi.

Je cherchais une solution à ce problème:)

il semble que vous ne pouvez pas affecter OkControlID à un contrôle si vous souhaitez que ce contrôle déclenche un événement, en supprimant simplement cette propriété, tout fonctionne à nouveau.

mon code (fonctionne):

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

Placez l'attribut dans le contrôle des boutons & "UseSubmitBehavior = false &";.

.

Aucune des réponses précédentes n'a fonctionné pour moi. J'ai appelé la publication 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>   

J'utilise souvent une étiquette vierge en tant que TargetControlID. ex. <asp:Label ID="lblghost" runat="server" Text="" />

J'ai vu deux choses qui empêchent le clic de déclencher:
1. vous devez supprimer OKControlID (comme d'autres l'ont mentionné)
2. Si vous utilisez des validateurs de champ, vous devez ajouter CausesValidation = & Quot; false & Quot; sur le bouton.

Les deux scénarios se sont comportés de la même manière pour moi.

J'ai trouvé un moyen de valider un modalpopup sans publication (postback).

Dans ModalPopupExtender, j'ai défini OnOkScript sur une fonction, par exemple ValidateBeforePostBack (), puis dans la fonction j'ai appelé Page_ClientValidate pour le groupe de validation souhaité, effectuez une vérification et, en cas d'échec, conservez le modalpopup. Si cela passe, j'appelle __doPostBack.

function ValidateBeforePostBack(){ 
     Page_ClientValidate('MyValidationGroupName'); 
     if (Page_IsValid) { __doPostBack('',''); } 
     else { $find('mpeBehaviourID').show(); } 
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top