44 votes

ModalPopupExtender L'événement de clic sur le bouton OK ne se déclenche pas ?

J'ai un bouton à l'intérieur d'un UpdatePanel. Le bouton est utilisé comme bouton OK pour un ModalPopupExtender. Pour une raison quelconque, l'événement de clic sur le bouton ne se déclenche pas. Une idée ? Ai-je oublié 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>

4voto

Kev Points 60744

Vous devriez jeter un coup d'œil au site de Matt Berseth. Il a beaucoup d'informations sur ModalPopupExtender et sur le genre de choses que vous essayez de faire :

ModalPopupExtender articles :

http://mattberseth.com/blog/modalpopupextender/

Chaque article est accompagné d'un exemple pratique avec le code source.

2voto

John Nolan Points 16633

Aucune des réponses précédentes n'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>

2voto

user519205 Points 21

J'utilise souvent une étiquette vide comme TargetControlID, par exemple. <asp:Label ID="lblghost" runat="server" Text="" />

J'ai vu deux choses qui font que le clic ne se déclenche pas :
1. vous devez supprimer l'OKControlID (comme d'autres l'ont mentionné)
2. Si vous utilisez des validateurs de champs, vous devez ajouter CausesValidation="false" sur le bouton.

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

1voto

Fernando68 Points 365

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

Dans le ModalPopupExtender, je règle le OnOkScript sur une fonction, par exemple ValidateBeforePostBack(), puis dans la fonction, j'appelle Page_ClientValidate pour le groupe de validation que je veux, je fais une vérification et si elle échoue, je continue à afficher le modalpopup. S'il réussit, j'appelle __doPostBack .

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X