IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Ouvrir une popup avec un buttonField dans un GridView


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Ouvrir une popup avec un buttonField dans un GridView
    Le souci est trés simple : on clique sur un ButtonField dans un GridView et une popup s'ouvre grâce à du Javascript.

    Pour l'instant j'ai essayé pas mal de chose, mais ne fonctionne. Le plus gros ennui que j'ai est qu'il n'y a pas de mesage d'erreur. Il ne se passe tout simplement rien ou alors c'est le UpdatePanel qui mange le message, mais là, je ne sais pas comment aller le chercher.

    Donc, si une âme charitable passe par là et vois l'erreur, un grand merci d'avance.

    Voici mon code HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <asp:SqlDataSource ID="sdsGvCampagne" runat="server" 
    	ConnectionString="<%$ ConnectionStrings:CS %>">
    </asp:SqlDataSource>
     
    <ajax:UpdatePanel ID="upCampagne" runat="server" UpdateMode="Always">
    	<Triggers>
    		<ajax:AsyncPostBackTrigger ControlID="gvCampagne" EventName="RowCommand" />
    		<ajax:AsyncPostBackTrigger ControlID="gvCampagne" EventName="PageIndexChanged" />
    	</Triggers>
    	<ContentTemplate>
    	<asp:GridView ID="gvCampagne" runat="server" 
    		DataSourceID="sdsGvCampagne" 
    		AutoGenerateColumns="false" 
    		AllowPaging="true" 
    		DataKeyNames="Id_Campagne" 
    		PageSize="15" 
    		PagerStyle-HorizontalAlign="Center">
    	<PagerSettings Position="Bottom" 
    		Mode="NextPreviousFirstLast" 
    		FirstPageText="Début" 
    		LastPageText="Fin" 
    		NextPageText="Suivant" 
    		PreviousPageText="Précédent" />
    	<Columns>
    		<asp:BoundField DataField="Id_Campagne" HeaderText="ID" />
    		<asp:BoundField DataField="Libelle" HeaderText="Libelle" />
    		<asp:BoundField DataField="Regie" HeaderText="Régie" />
    		<asp:ButtonField ButtonType="Image" ImageUrl="~/App_Themes/jemprunte/loupe.png" Text="Apercu" CommandName="Apercu" />
    		<asp:ButtonField ButtonType="Image" ImageUrl="~/App_Themes/Jemprunte/modifier_16.png" Text="Modifier" CommandName="Modif" />
    	</Columns>
    </asp:GridView>
    		<asp:PlaceHolder ID="FormuModif" runat="server"></asp:PlaceHolder>
    	</ContentTemplate>
    </ajax:UpdatePanel>
    Et mon code Behind.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Protected Sub gvCampagne_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvCampagne.RowCommand
    	Select Case e.CommandName
    		Case "Apercu"
    			Dim IdCell As TableCell = CType(gvCampagne.Rows(Convert.ToInt32(e.CommandArgument)), GridViewRow).Cells(0)
    		Me.Page.ClientScript.RegisterStartupScript(Me.GetType, "monscript", "<script type='text/javascript'>OuvrirPopupParam('/Default.aspx?page=18&mail=campagne&campagne=" & IdCell.Text & "', 1050, 750, 'no', 'no', 'no', 'no', 'no', 'yes', 'no');</script>")
    	End Select
    End Sub

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Personnellement, lorsque je dois ouvrir une pop-up à l'update d'un updatepanel j'utilise le PageRequestManager.
    Dans ton cas, je tenterais (j'ai bien dit TENTERAIS) un truc de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script language="javascript" type="text/javascript">
                var prm = Sys.WebForms.PageRequestManager.getInstance();
                prm.add_initializeRequest(InitializeRequest);
                prm.add_endRequest(EndRequest);
                var postBackElement;
                    
                function EndRequest(sender, args)
                {
                   if (postBackElement.id == 'monButtonFieldsClientId*'))
                    {
                        window.open('./maPage.aspx?maQueryString?QUERY');
                    }                
                }
    * = Le client ID de ton ButtonField.

    Le problème ici va être de passer dynamiquement le clientID de ton ButtonField à la fonction JS.

    Sinon, comme l'explique la doc, cet objet permet de récupérer toute mise à jour d'un updatepanel. Super pratique donc, bien que méconnu.

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    Il y a tout de même un truc que je ne comprends pas : est ce que le bout de code que tu donnes va dans un fichier JS ou est ce que je l'envoi avec le RegisterStartupScript ?

    Si c'est le RegisterStartupScript, facile de passer un truc, variable ou ID.
    Sinon, le problème reste entier pour moi : comment déclencher la fonction JS à partir du click du ButtonField.

    A force de réfléchir, je pense que le problème se situe là.

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    C'est la limite de ma solution ! Je ne maîtrise pas le registerStartUpScript et ne pourrai donc te répondre.
    Personnellement, ce bout de code est utilisé dans la balisage de mes pages (.aspx), néanmoins, je ne vois pas ce qui empêcherait de l'utiliser dans le registerStartUpScript.
    Dans ce cas, il faut mettre ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script language="javascript" type="text/javascript">
                var prm = Sys.WebForms.PageRequestManager.getInstance();
                prm.add_initializeRequest(InitializeRequest);
                prm.add_endRequest(EndRequest);
                var postBackElement;
    dans le balisage de ta page ou dans ton master page

    et ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function EndRequest(sender, args)
                {
                   if (postBackElement.id == 'monButtonFieldsClientId*'))
                    {
                        window.open('./maPage.aspx?maQueryString?QUERY');
                    }                
                }
    dans ton regsiterstartupscript.

    EDIT : après réflexion, je pense que tout le script peut être intégré dans le registerstartupscript. Une validation de cette affirmation par quelqu'un de plus calé en la matière serait néanmoins appréciable.

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Euh, et si on essayer juste de revenir à un truc simple : est ce qu'il faut déployer le même genr de chose pour faire une simple alert() ?

    Parce que, j'ai implémenté le script complet, mais je rencontre pas mal de problème et quand j'ai voulu simplifié avec un alert(), ben je me suis retrouvé tout paumé.

Discussions similaires

  1. Ouvrir une popup puis la fermer dans la page suivante
    Par coraziari_l dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/07/2012, 14h48
  2. Ouvrir une popup avec paramètre
    Par Godard dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/10/2010, 18h43
  3. [AJAX] ouvrir une popup avec du Jscript
    Par zooffy dans le forum ASP.NET
    Réponses: 7
    Dernier message: 13/05/2008, 15h40
  4. Ouvrir une frame avec un bouton dans une frame
    Par argon dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 25/03/2006, 10h48
  5. ouvrir une popup avec php
    Par Defrancesco dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/10/2005, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo