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 :

[C# asp, débutante] GridView et linkbutton


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Par défaut [C# asp, débutante] GridView et linkbutton
    Bonjour,

    Je souhaite ajouter un control linkbutton dans mon gridview.

    Mon grid view se compose d'une liste de personne avec les champs suivant nom,prenom,téléphone.
    Je souhaite afficher dans un détail view plus de données concernant la personne choisie (adresse,mail...)

    Pour cela je souhaite metre un control linkbutton. Quand l'utilisateur cliquera sur le nom d'une personne (ou bien sur la ligne representant ma personne) soit redirigé vers une page plus complète. Bien sur il faut que j'envoi l'identifiant (id) de ma personne quand l'utilisateur aura cliqué..l'id étant récupéré également dans mon dataset.Dans mon gridView je choisi de ne pas l'afficher.

    code:
    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
     
           //Choisi les colonnes a afficher
            BoundField b;
            GridView1.AutoGenerateColumns = false;
            b = new BoundField();
            b.DataField = "Nom";
            b.HeaderText = "Nom";
            GridView1.Columns.Add(b);
            b = new BoundField();
            b.DataField = "Prenom";
            b.HeaderText = "Prenom";
            GridView1.Columns.Add(b);
            b = new BoundField();
            b.DataField = "Telephone";
            b.HeaderText = "Telephone";
            GridView1.Columns.Add(b);
     
            GridView1.DataSource = set.Tables[0];
            GridView1.DataBind();
    Je suis un peu perdue (bcp).
    Auriez vous une solution a mon problème qui pourrai m'apporter un peu d'aide?

    Bonne journée a tous.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Par défaut
    sur www.asp.net, il y a une video qui montre l'ajout d'une colonne avec un linkbutton qui ouvre une nouvelle page en passant un param dans l'url (l'id de la ligne sélectionnée) et affiche ainsi dans un detailview les informations concernant la ligne sélectionnée.

    Fix


    URL Exact : LinkButton in GridView

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Par défaut
    Merci de ta réponse fix.

    La vidéo est très interressante.
    Mais il se trouve qu'apres étude du linkbutton je ne peux pas l'utilisé car il renvoi du javascript au client. Or le type d'appareil que j'utilise(PDA..) n'accepte pas le JS.

    Mais mon probleme reste le meme.

    Ma source de donnée est a l'orrigine une arraylist, ou que j'ai mis dans un dataset.. bref j'arrive parfaitement a afficher ma liste de personne.

    Le probleme reste de faire un lien, un bouton.. pour afficher le détail de la personne dans un detailview.

    Si quelqu'un peut m'aider je lui serai reconnaissante.

    Bonne soirée et merci d'avance

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Par défaut
    et si tu utilisais un TemplateItem, et dedans il y a un Label, dans la propriete Text il y a une methode public genre <%=GetLink("Id").ToString()%>

    GetLink(string id) est une methode public dans ton code c#, laquelle te retourne un lien style <a href ......, comme le label interprete le html, tu auras un lien, tu n'aura qu'a correctement construire ton url avec un param ton id

    Fix

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Par défaut encore besoin d'un peu d'aide
    Merci d'etre toujours présent pour me répondre fix !

    Mais avec ta méthode, comment savoir sur quelle ligne (quel id) l'utilisateur a cliqué ??
    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
    ASP:
    <asp:TemplateField HeaderText="Infos"  SortExpression="Infos" >
                      <ItemTemplate>
                           <asp:Label ID="id" runat="server" Text='<%#GetLink("Id").ToString()%>'></asp:Label>
                       </ItemTemplate>
                      <ItemStyle BorderWidth="0px" />
                      <HeaderStyle BorderWidth="0px" />
                    </asp:TemplateField>
    
    C#
     protected string GetLink(string id)
        { 
            return "<a href='./Default.aspx?ref='+id+''>voir</a>";
        }

    autre code, Sinon, en créant un bouton sélection commandfield, j'arrive a récupérer l'index:
    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
    C#:
     protected void Select_infos(object sender, EventArgs e)
        {
            int index = GridView1.SelectedIndex;
            GridViewRow row_select = GridView1.Rows[index];
        }
    
    ASP:
    <asp:GridView ID="GridView1"
                          runat="server"
                          CellPadding="4"
                          ForeColor="#333333"
                          GridLines="None"
                          OnSelectedIndexChanged="Select_infos">
                          ....
                    <asp:CommandField ShowSelectButton="True" SelectText="Voir" ButtonType="Button" />
    ....
    Mais comment faire après je bloque toujours..??
    Bonne journée !!

    Lalou.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Par défaut
    De fait, j'avais pas vu que tu ajoutais de manière dynamique des colonnes dans ta gridview, ben je pense qu'en ajoutant une colonne Id (contenant donc l'id de la personne), tu dois pouvoir récupérer cet id.

    Pour être clair, ce que j'ai déjà fait via une stored proc :

    SELECT Id, Name, Address From User

    te retourne un dataSet. (ou une liste ou autre)

    je faisais GridView.DataSource = DataSet (puis le DataBind).

    Et mais colonne étant définie par moi et non autogenerate, j'avais Datafiel = Id, Name, Address (le meme nom que les valeurs dans le select)
    et dans dans le Eval("Id"), l'Id correspond à l'Id du Select, donc un Id différent pour chaque user.

    Mais peut etre que tu récupères les infos de tes users via un autre param, et alors au lieu de mettre id, tu mets name, ou adresse (je ne sais pas ce que tu souhaite).

    En fait, pour le detailView, tu as besoin de quel genre d'info ? Pas l'id de la ligne je suppose mais une info concernant la personne non ?

    Fix

  7. #7
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Par défaut
    A l'origine je récupère mes information sur mes personnes dans un annuaire LDAP, et pas dans une base SQL.

    J'ai les données de mes personnes dans une ligne de mon dataset.
    Puis ap je faisai GridView1.DataSource = set.Tables[0] (comme le montre le code dans mes précédents messages).

    Dans le gridview je choisi d'afficher seulement 3 choses en désactivant l'autogenerate : (le nom, prénom et le téléphone)

    Je récupère le n° d'imatriculation qui peut me servir d'id ce qui m'évitera de rechercher le n° de ligne..
    Avec l'hyperlink je passe en paramètre cet id.Mais comment le traité dans le détail..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:HyperLinkField DataNavigateUrlFields="Id" DataNavigateUrlFormatString="Default.aspx?Id={0}" Text="détail" />
    Pas l'id de la ligne je suppose mais une info concernant la personne non ?
    Vi, je souhaite que mon détailview m'affiche les informations comprise dans le dataset (nom, prénom ,téléphone, Mail, adresse, emploi ...) de la personne sélectionné dans la liste de mon gridview.

    Une question se pause (encore) comment lié le grid & détail view. Tous les exemples que j'ai pu voir partent des bases SQL.
    Enfin je commence a y voir un peu plus clair, mais sa reste assé flou qd meme.

    Lalou

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Par défaut
    oui je sais, j'ai le meme probleme avec un SqlDataSource, il ne fait pas ce que je souhaite faire.
    Mais est ce que tu as vraiment besoin d'un detailView ?
    Parce que une fois que tu as ton num d'imatriculation , tu peux facilement parcourir le dataset.Table[0].select("");

    Mais sinon avec le detailView et la grid, la je dois faire des recherches aussi.
    Je ne saurai en dire plus la dessus, desole.

    Fix

    PS : si tu trouves des infos, donne le truc

  9. #9
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Par défaut ma solution...
    hi !!

    Alors je m'en suis sorti en bidouillant.

    Une fois après avoir récupérer l'imatriculation (id) propre a chaque personne grace a un bouton select. J'effectue une recherche par id. Puis je crée mon détailsview dynamiquement.(Aide Msdn)

    J'avoue qu'il doit y avoir d'autres solution mais j'ai réussi a avoir se que je souhaitais.

    Maintenant que sa marche.. je change mon code pr l'appliqué aux mobiles donc plus de gridview etc. mais un objectlist. C'est plus facile de remanier que de codé directement surtt que je suis débutante dans ce langage.
    Le probleme avec cet objectlist c'est qu'il me renvoi du javascript donc mon site ne sera pas aux normes du W3C(mobile: pda, smartphone). Mais le monde des mobiles est un autre sujet. ^^

    Ciao et a bientot.
    LaLou

    (ps : encore merci pr ton aide fix)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/09/2009, 08h33
  2. Methodes ASP.NET GridView
    Par barnet dans le forum SharePoint
    Réponses: 5
    Dernier message: 31/12/2007, 08h29
  3. [ASP.net][GridView] Probleme sur un update
    Par jeromechezgdf dans le forum ASP.NET
    Réponses: 6
    Dernier message: 31/05/2007, 17h23
  4. [ASP.Net/GridView] Comment effectuer une jointure ?
    Par nikalkal dans le forum Accès aux données
    Réponses: 3
    Dernier message: 20/07/2006, 09h05
  5. ASP débutant
    Par akaii dans le forum ASP
    Réponses: 5
    Dernier message: 17/11/2005, 18h39

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