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

C# Discussion :

Problème récupération SelectedDataKey dans un gridview


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Par défaut Problème récupération SelectedDataKey dans un gridview
    Bonjour

    Comme le titre le dis j'ai un problème pour récupérer, la valeur de la proprièté SelectedDataKey. J'explique mon cas :
    J'ai un gridview comme 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
    <asp:GridView ID="verif_Video" runat="server" AutoGenerateColumns="False" 
                            Width="715px" CellPadding="4" ForeColor="#333333" 
                            GridLines="None" style="margin-left:5px;" 
                                DataKeyNames="ID" onpageindexchanging="verif_Video_PageIndexChanging" 
                            onselectedindexchanged="verif_Video_SelectedIndexChanged" 
                            AllowPaging="True" onrowdeleting="verif_Video_RowDeleting" Visible="False">
    <Columns>
                            <asp:CommandField ButtonType="Image" 
                                SelectImageUrl="~/Images/Icones/Ico_Modifier.gif" ShowSelectButton="True" />
                            <asp:BoundField DataField="ID" HeaderText="ID" Visible="false" >
                            <FooterStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                            <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                            <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                            </asp:BoundField>
    ...
    </Columns>
    </asp:GridView>
    En cliquant sur un bouton dans mon gridview, je voudrais mettre à jour ma base de donnée (Pour ma part j'ai pris un bouton supprimer car c'est pour le retiré de la liste), Donc voici la procédure :

    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
    protected void verif_Video_RowDeleting(object sender, GridViewDeleteEventArgs e)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
    
                    string Video_id = verif_Video.SelectedDataKey.Value.ToString();
    
                    if (element_afficher.Text != "1")
                    {
                        string video_mise_a_jour = "UPDATE [VidéoMania].[dbo].[VIDEO_Liste_Video] " +
                                                   "SET [Verification] = 1 " +
                                                   "WHERE ID = '" + Video_id + "'";
                        SqlCommand Execute_requete = new SqlCommand(video_mise_a_jour, connection);
                        int nbsite = Execute_requete.ExecuteNonQuery();
                        verif_Video.DataSource = Verif_Video_data;
                        verif_Video.DataBind();
                    }
                    else
                    {
                        string video_mise_a_jour = "UPDATE [VidéoMania].[dbo].[VIDEO_Liste_Video] " +
                                                   "SET [Verification] = null " +
                                                   "WHERE ID = '" + Video_id + "'";
                        SqlCommand Execute_requete = new SqlCommand(video_mise_a_jour, connection);
                        int nbsite = Execute_requete.ExecuteNonQuery();
                        verif_Video.DataSource = Verif_Video_data;
                        verif_Video.DataBind();
                    }
                }
            }
    La ligne qui pose problème c'est la ligne en rouge, in ne me retourne un erreur comme quoi la référence de l'objet n'est pas définis, Qu'est ce que j'ai oublié ?

    Merci pour votre aide

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Par défaut
    peut etre que "verif_Video.SelectedDataKey.Value" est NULL ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Par défaut
    SelectedDataKey te renvoye la valeur de la datakey de la ligne selectionnee.
    Dans ton cas tu ne sélectionnes pas de ligne...

  4. #4
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut
    Salut,

    Il faudrait peut-être parcourir tes lignes pour savoir laquelle est sélectionnée non?

    J'ai pas vérifié mais ça pourrait être un truc du genre :
    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
     
     
    protected void verif_Video_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
       foreach (GridViewRow row in verif_Video.Rows)
       {
             if (row == verif_Video.SelectedRow)
             {
                 // On récupere l'ID
                 string value = verif_Video.DataKeys[row.RowIndex].Value.ToString();
     
                 // Ton traitement
                 .........................
             }
    }

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Par défaut
    Citation Envoyé par Jean-Michel Ormes Voir le message
    Salut,

    Il faudrait peut-être parcourir tes lignes pour savoir laquelle est sélectionnée non?

    J'ai pas vérifié mais ça pourrait être un truc du genre :
    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
     
     
    protected void verif_Video_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
       foreach (GridViewRow row in verif_Video.Rows)
       {
             if (row == verif_Video.SelectedRow)
             {
                 // On récupere l'ID
                 string value = verif_Video.DataKeys[row.RowIndex].Value.ToString();
     
                 // Ton traitement
                 .........................
             }
    }
    Bonjour

    Je viens de l'essayer, est il me retourne la même erreur comme si que toute mes clè primaire sont vide.

    Donc j'ai fait un test, j'ai afficher mes clés primaires dans mon gridview, elle existe, mais il ne veux pas les récupérer

    Si vous avez une solution à me proposer

    Merci d'avance

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Par défaut
    Tu utilises SelectedRow comme je disais plus haut tu ne selectionnes aucune ligne...

    En faisant ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    protected void verif_Video_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
       foreach (GridViewRow row in verif_Video.Rows)
       {
     
                 // On récupere l'ID
                 string value = verif_Video.DataKeys[row.RowIndex].Value.ToString();
     
                 // Ton traitement
                 .........................
     
    }
    Ta value ne devriat plus etre vide.

    Dans ton cas il te faut au prealable selectionner ta ligne.
    Il existe des boutons exprès dans le gridview pour gerer la suppression et la modification de ligne.

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

Discussions similaires

  1. Problème d'accent dans une GridView
    Par harry25 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 02/09/2009, 14h40
  2. Problème récupération texte dans des balises HTML
    Par stansoad0108 dans le forum Langage
    Réponses: 20
    Dernier message: 24/06/2008, 15h55
  3. Problème de variable dans un "GridView"
    Par lionel256 dans le forum VB.NET
    Réponses: 17
    Dernier message: 22/04/2008, 15h53
  4. Problème d'édition dans un GridView
    Par ecthelion77 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 15/10/2007, 16h44
  5. [Smarty] Problème récupération variable dans un for
    Par slaxsystem dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 02/05/2007, 17h10

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