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 :

faire des hypertexts avec parametre get dans un GridView


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut faire des hypertexts avec parametre get dans un GridView
    Bonjour,

    J’utilise Microsoft Visual Studio, je suis en train de faire un projet pour l’école en ASP.NET et j’ai un petit problème.

    Voila, alors j’ai un gridview qui affiche une colonne avec des noms de donnés. J’aimerais que cette colonne face office de menu, et donc devra réagir en lien hypertext. Mais j’aimerais que le lien soit dirigé sur la page ~/Visiteur/projet.aspx

    Mais avec un paramètre en GET. Ce serait l’id de l’enregistrement. (J’utilise une base de données SQLServer)

    Comment puis-je faire pour faire ce lien avec un get. Exemple (~/Visiteur/projet.aspx ?id=7a8ef1cd-4126-415c-a3b5-2fca9144d433)

    Franchement merci d’avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 39
    Points
    39
    Par défaut
    Salut !

    J'ai un petit bout de code qui pourrait t'aider.
    Dans ta gridview, ajoute un TemplateField avec un LinkButton et tu définis l'id que tu récupères dans ta base dans CommandArgument avec un Eval :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <asp:TemplateField HeaderText="headertext" SortExpression="sortexpression">
                    <HeaderStyle HorizontalAlign="Center" Width="80px"/>
                    <ItemTemplate>
                        <asp:LinkButton ID="lnk" runat="server"
                            CommandName="Lien"
                            CommandArgument = '<%# Eval("Id","(~/Visiteur/projet.aspx ?id={0}") %>'
                            Text ="lien"
                        </asp:LinkButton>
                    </ItemTemplate>
                    <ItemStyle  HorizontalAlign="Center" Width="80px"/>
                </asp:TemplateField>
    Ensuite dans la méthode associée à l'événement OnRowCommand, tu peux faire ta redirection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    protected void gridview_RowCommand(Object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Lien")
            {
                Response.Redirect(e.CommandArgument.ToString());
            }
        }
    J'espère que ça répond à ta question...

    a+

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 68
    Points : 104
    Points
    104
    Par défaut Autre solution et remarque méthodologique
    La fonctionnalité que vous recherchez est intégrée par défaut dans le GridVew.

    1) Sur le GridView, via le SmartTag faire 'Modifier les colonnes', ou aller dans la collection Columns.

    2) Sélectionner dans la liste des champs disponibles HyperLinkField puis faire ajouter. Il ne reste plus qu'à configurer ce lien.

    3) Dans la propriété DataNavigateUrlFormatString saisir le format de l'url voulu, donc dans le cas présent quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ~/Visiteur/projet.aspx ?id={0}
    4) Dans la propriété DataNavigateUrlFields saisir le nom du champ dont la valeur sera substituée à {0} dans DataNavigateUrlFormatString. Donc dans le cas présent le champ contenant l'id du client. Dans la pratique on peut créer un format qui utilise plusieurs champs.

    C'est fini.

    Le code aspx produit sera du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <asp:GridViewID="GridView1"runat="server">
    <Columns>
       <asp:HyperLinkFieldDataNavigateUrlFields="CLI_UID"DataNavigateUrlFormatString="~/Visiteur/projet.aspx ?Id={0}"/>
    </Columns>
    </asp:GridView>
    Remarque méthodologique

    Je précise que la remarque suivante n'a aucun caractère ressemblant au moindre petit reproche. Mon objectif est plutôt d'essayer d'attirer l'attention sur la méthodologie.

    Je constate en effet au travers des forums que de nombreuses questions témoignent du fait que lire la documentation ne fait pas parti des habitudes.

    Avant d'utiliser un contrôle pour la première fois, il est fondamental de prendre le temps de lire la documentation le concernant. Ce n'est pas une perte de temps mais un investissement.

    Comment lire la documentation d'un contrôle

    1) Lire attentivement la page de documentation générale.

    2) Brasser la liste des membres du contrôle (propriétés / méthodes / évènements)

    3) Lire la description des membres qui ont attirés notre attention.

    4) Essayer de comprendre les exemples.

    5) Au cours de ces différentes étapes prendre note des points obscurs et prendre note des fonctionnalités que l'on trouve intéressantes et utiles. Essayer de résoudre les incompréhensions avant d'utiliser le contrôle.

    Par exemple, dans le cas présent, la page de présentation du GridView liste les types de colonnes :

    BoundColumn
    Affiche une colonne liée à un champ dans une source de données. Elle affiche chaque élément figurant dans le champ sous forme de texte. Il s'agit du type de colonne par défaut du contrôle DataGrid.
    ButtonColumn
    Affiche un bouton de commande pour chaque élément dans la colonne. Cela vous permet de créer une colonne de contrôles boutons personnalisés, tels que les boutons Add ou Remove.
    EditCommandColumn
    Affiche une colonne qui contient des commandes de modification pour chaque élément dans la colonne.
    HyperLinkColumn
    Affiche le contenu de chaque élément dans la colonne sous forme de lien hypertexte. Le contenu de la colonne peut être lié à un champ dans une source de données ou à du texte statique.
    TemplateColumn
    Affiche chaque élément dans la colonne suivant un modèle spécifié. Cela vous permet de fournir des contrôles personnalisés dans la colonne.



    On constate immédiatement qu'en ce qui concerne HyperLinkColumn l'explication permet de comprendre ce que l'on peut en faire.

    Manque de temps

    Que je fasse des audits, que ce donne une formation, que je conseil les développeurs auxquels je fournis des solutions... combien de fois j'ai entendu cet argument : "j'ai pas le temps".

    Cet argument est vrai dans la vie de tous les jours. Nous manquons de temps pour tondre notre pelouse, pour faire nos courses, pour remplir la paperasse... Mais qu'arrive-t-il quand on ne prend pas le temps ?

    Moi ce que je sais, c'est que l'univers est régis par des lois. On peut toujours essayer de les enfreindre ou de ne pas en tenir compte, mais tôt ou tard on en a le revers de médaille. Or, il n'y a aucune raison pour que l'informatique échappe aux lois de l'univers.

    Le problème avec l'informatique c'est que c'est généralement tard plus que tôt qu'arrivent les conséquences. Si on ne tiens pas compte de la loi qu'est la pesanteur et que l'on décide de se jeter par la fenêtre pour descendre plus vite les étages, la loi nous rattrape immédiatement. Alors qu'en informatique, la plupart du temps les conséquences se présentent des mois plus tard. Les conséquences peuvent être dramatiques. Et le pire, c'est qu'elles génèrent bien souvent une perte de temps considérable, bien supérieur au temps qu'il aurait fallu investir pour les éviter.

    La méthode

    Mon expérience m'a montré que rien ne remplace la méthode, même pas le génie. Faire preuve de méthode ce n'est pas perdre du temps, c'est en investir. La méthode rapporte du temps à très long terme.

    Mr Albert Einstein avait en son temps posé un problème qu'environ 2% de la population de la planète pouvait résoudre (soit ceux ayant un QI d'au moins 150).

    Ce qui est amusant, c'est que même sans un tel QI, avec un peu de temps et un peu de méthode, on trouve la solution. La méthode et le temps sont comme des boosters de capacités.

    Alors si comme moi vous n'avez pas 150 de QI, faites un usage intensif de la méthode et investissez convenablement votre temps.
    Michaël LEBRETON - Developpeur / Formateur indépendant
    http://www.netkoders.com

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci pour la solution...

    tu vois le truc c'est que j'ai vu l'aide, et j'ai fait exactement comme tu m'as dis.. mais quand j'ai posté ce sujet mon code ne marchait pas car j'ignorais que l'on pouvait mettre le paramètre {0}. je ne connaissais pas cette syntaxe et j'ai perdu un temps précieux a chercher une solution tout seul.

    C’est pour cela que j'ai décidé de sollicité votre aide si précieuse. Mais t’inquiète pas j’ai bien cherché avant, c’est juste une petite subtilité qui m’a échappé

    Désolé pour le dérangement

    Et merci beaucoup

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 68
    Points : 104
    Points
    104
    Par défaut
    Il n'y a aucun problème, comme je l'ai dit, ma remarque n'avait aucun caractère particulier. C'est juste que j'ai trouvé que dans ce contexte c'était l'ocasion de la faire.

    Après, les forums ça sert à cela. Le nombre de fois ou j'ai trouvé dans un forum une solution qui m'était passé sous les yeux...

    Si l'habitude de lire la doc est déjà là, c'est magnifique.

    Bon courage.
    Michaël LEBRETON - Developpeur / Formateur indépendant
    http://www.netkoders.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. un outil en ligne pour faire des graphiques avec les données fournies en GET ?
    Par clavier12AZQSWX dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 26/05/2014, 09h42
  2. Réponses: 5
    Dernier message: 30/11/2009, 11h14
  3. [MySQL] inserer un lien hypertext avec parametre dans mysql par php
    Par gubule dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/10/2009, 14h22
  4. [Son] Faire des bruits avec une application java
    Par mammistegon dans le forum Multimédia
    Réponses: 6
    Dernier message: 22/01/2005, 17h17
  5. faire des graphiques avec Perl
    Par And_the_problem_is dans le forum Modules
    Réponses: 2
    Dernier message: 16/07/2003, 16h08

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