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#] Récupérer une valeur d'un gridview


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut [C#] Récupérer une valeur d'un gridview
    Bonjour à tous !
    Je vous explique mon problème.

    J'ai dans une page web, un GridView qui est lié à une SqlDataSource, qui ressort tous les enregistrements d'une table de ma base de données.

    A ce GridView, j'ai rajouté un champs CommandField ("Sélectionner").

    Sur la GridView, lors de l'évenement RowCommand(), je déclenche une fonction: Display_()

    Jusque là, je n'ai pas d'erreur, mon gridView s'affiche avec les données et je vois bien un petit lien sélectionner.
    Lorsque je clique sur sélectionner, je lance bien la fonciton Display_.

    Mais ! dans ma fonction Display_(), je voudrais pouvoir récupérer les informations de la ligne sélectionnée (les champs ainsi que les valeurs des champs). Comment faire ??? je débute et m'y perd un peu.

    D'autre part, dans ma sqldatasource je récupérer le champs ID de ma table qui me permet d'itentifier de manière unique un enregistrement mais je ne l'affiche pas dan sla gridView.
    Puis-je quand même le récupérer ? et comment ?? ça m'arrangerait énormément !!!

    Voilà ! Merci pour vos réponses !! Et bonne journée !
    tout le monde est d'accord pour critiquer la pensée unique

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Points : 633
    Points
    633
    Par défaut
    pour l'id tu n'es pas obligé de l'affiché, tu mettras juste un visible false pour cette colonne.
    Dans la partie <asp:GridView .... tu mettras DataKeyNames= 'NAME KEY' ... />
    En ce qui concerne la récupération d'une valeur :

    Partie Serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Moi c'est un Guid comme tu vois
    Id = (Guid)gridName.DataKeys[e.NewSelectedIndex].Value;
    // Pour récupérer une autre valeur :
    Value = ((Label)gridName.Rows[e.NewSelectedIndex].Cells[NumColonne].Controls[1]).Text ;
    Mais bon c'est un truc comme ca pour récupérer ......

    Mathieu

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Ma fonction display_ déclenché sur l'évenement RowCommand est comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    protected void Dispay_(object sender, GridViewCommandEventArgs e)
    {
     
    }
    J'ai l'impression que je n'ai pas choisi le bon évènement.
    Peux tu m'éclairer l'évènement qu'il faut choisir pour détecter la sélection d'une ligne faire le traitement adéquat pour récupérer les données de la ligne sélectionné. Je me perds un peu parmi toutes les fonctionnalités que propose GridView ....
    tout le monde est d'accord pour critiquer la pensée unique

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Points : 633
    Points
    633
    Par défaut
    Selected ou selecting non ??

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Je n'ai pas de tels événements disponibles por le gridview.
    avec "selected" il y a uniquement: OnSelectedIndexChanged ou OnSelectedIndexChanging ...
    tout le monde est d'accord pour critiquer la pensée unique

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Je m'en suis à moitié sorti en faisant ceci:

    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
     
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource2" ForeColor="#333333" GridLines="Horizontal" style="left: 295px; position: absolute; top: 18px" AllowPaging="True" AllowSorting="True" Height="231px" Width="555px" OnSelectedIndexChanged="Dispay_pics">
                <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                <RowStyle BackColor="#E3EAEB" />
                <EditRowStyle BackColor="#7C6F57" />
                <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
                <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
                <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                <AlternatingRowStyle BackColor="White" />
                <Columns>
                    <asp:BoundField DataField="ID_ALBUM" HeaderText="ID_ALBUM" InsertVisible="False"
                        SortExpression="ID_ALBUM" Visible="False" />
                    <asp:BoundField DataField="TITRE" HeaderText="Titre album" SortExpression="TITRE" />
                    <asp:BoundField DataField="DATE_CREATION" HeaderText="Date" SortExpression="DATE_CREATION" />
                    <asp:BoundField DataField="OWNER" HeaderText="Propriétaire" SortExpression="OWNER" />
                    <asp:BoundField DataField="NB_PHOTOS" HeaderText="Nombre de photos" SortExpression="NB_PHOTOS" />
                    <asp:CommandField EditText="Editer" SelectText="Voir" ShowSelectButton="True" />
                </Columns>
    Et la fonction déclenchée sur l'évènement onSelectedIndexChanged
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        protected void Dispay_pics(object sender, EventArgs e)
        {
            string test="";
     
            for (int i = 0; i < GridView1.SelectedRow.Cells.Count; i++)
            {
                test +=" : " + GridView1.SelectedRow.Cells[i].Text.ToString() + "<BR>";
            }
            Response.Write(test);
        }
    Par contre, je n'arrive pas à:

    - Récupérer la valeur de ID_ALBUM (je crois parcequ'il est en statut invisible mais comment faire alors ??)
    - Récupérer le nom de mes headers (Titre album, propriétaire, etc ...)


    Comment faire donc ???
    tout le monde est d'accord pour critiquer la pensée unique

  7. #7
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    Je n'ai pas de tels événements disponibles por le gridview.
    avec "selected" il y a uniquement: OnSelectedIndexChanged ou OnSelectedIndexChanging ...
    Il s'agit de l'event OnSelectedIndexChanged (se produit àprès la sélection d'une ligne) ou OnSelectectedIndexChanging (se produit pendant)
    A toit de voir mais moi je dirais qu'il te faut le premier (chenged)

    Récupérer la valeur de ID_ALBUM (je crois parcequ'il est en statut invisible mais comment faire alors ??)
    Si tu as bien pécisé dans ton GridView les DataKeyNames="ID_ALBUM", alors dans ton evenement OnSelectedIndexChanged :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int idAlbum = (int)e.SelectedDataKey.Value;

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Salut Guitoux,

    J'ai rajouté dans mon gridview un datakayname comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource2" ForeColor="#333333" GridLines="Horizontal" style="left: 295px; position: absolute; top: 18px" AllowPaging="True" AllowSorting="True" Height="231px" Width="555px" DataKeyNames="ID_ALBUM" OnSelectedIndexChanged="Dispay_pics">
    Mais lorsque j'essaie de le récupérer ainsi dans la fonction Dispay_pics:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        protected void Dispay_pics(object sender, EventArgs e)
        {
            string test="";
     
            for (int i = 0; i < GridView1.SelectedRow.Cells.Count; i++)
            {
                test +=" : " + GridView1.SelectedRow.Cells[i].Text.ToString() + "<BR>";
            }
            int a =(int)e.SelectedDataKey.Value;
     
        }
    J'ai l'erreur suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Erreur	1	'System.EventArgs' ne contient pas de définition pour 'SelectedDataKey'	C:\Inetpub\wwwroot\MySite\main.aspx.cs	55	23	http://127.0.0.1/MySite/
    : : :
    tout le monde est d'accord pour critiquer la pensée unique

  9. #9
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    excuse c de ma faute, une erreur, il fallait lire :

    GridView1.SelectedRow.DataKey.Value

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Oui je viens de fair eune recherche sur msdn et c'est ce que je viens de trouver,
    j'allais te répondre !!!

    Merci pour ton aide !!!!
    tout le monde est d'accord pour critiquer la pensée unique

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/07/2013, 14h08
  2. Réponses: 4
    Dernier message: 01/08/2007, 15h35
  3. [XSL]récupérer une valeur de plusieurs fichiers XML
    Par snoop dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 05/02/2006, 00h32
  4. Réponses: 2
    Dernier message: 17/06/2005, 13h38
  5. Réponses: 2
    Dernier message: 11/12/2004, 21h20

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