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 :

DatagridView et Primary Keys


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut DatagridView et Primary Keys
    Bonjour

    Dans mon application j'utilise un DataGridView afin d'affichier le contenu d'une table. Jusque là tout ok.
    Je voudrais faire en sorte que seulement quelques colonnes ne soit affichées dans la DataGridView (toutes les colonnes à part la clé primaire et une colonne appelée "created_date" existante dans toutes mes tables).
    Comment puis-je faire ça?
    Sera-il possible de modifier une ligne de la table en cause sans que la clé primaire soit affichée dans le DataGridView? (est-ce que je continue à pouvoir accéder à sa valeur?)

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    Ca devrait être possible si tu mets la propriété Visible des colonnes concernées à false.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDataGrid.Columns[0].Visible = false;
    (pour récupérer l'index de la colonne, "0" dans mon exemple, tu dois pouvoir boucler sur les propriétés Name de tes maDataGrid.Columns)

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut
    Merci pour la réponse.

    Oui, en effet c'est une solution mais qui n'est pas optimale car elle m'oblige à savoir la table en cause et la primary key en cause.

    Imaginons que ma table a 2 champs qui composent la clé primaire.
    Je peux effectivement faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maDataGrid.Columns[0].Visible = false;
    maDataGrid.Columns[1].Visible = false;
    bien sur en sachant que les 2 premiers champs de la table sont effectivement ceux qui composent la clé primaire.

    Mais dans le cas où je ne connais pas la table. Comment faire? Comment tester si une colonne d'une table est ou fait partie de sa clé primaire?

    merci

    Citation Envoyé par clenoir Voir le message
    Ca devrait être possible si tu mets la propriété Visible des colonnes concernées à false.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDataGrid.Columns[0].Visible = false;
    (pour récupérer l'index de la colonne, "0" dans mon exemple, tu dois pouvoir boucler sur les propriétés Name de tes maDataGrid.Columns)

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    tu peux le savoir via le reader en faisant d'abord un premier executereader(keyinfo & shcemaonly)
    puis un getschematable
    et ensuite l'executereader normal
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    tu peux le savoir via le reader en faisant d'abord un premier executereader(keyinfo & shcemaonly)
    puis un getschematable
    et ensuite l'executereader normal
    Merci

    Problème résolu!

    Avec le code suivant je peux obtenir la liste des colonnes qui composent la clé primaire d'une table:

    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
     
    IDataReader reader = cmd.ExecuteReader(System.Data.CommandBehavior.KeyInfo);
     
                if (reader != null)
                {
                    DataTable schemaTable = reader.GetSchemaTable();
                    DataRowCollection rows = schemaTable.Rows;
                    DataColumnCollection cols = schemaTable.Columns;
     
                    foreach (DataRow r in rows)
                    {
                        // The column name is on the first position
                        string colname = (string)r[0];
     
                        // The iskey property is one the 13th position
                        bool iskey = (bool)r[12];
     
                        // If the column is the primary key (or part of it) we keep it.
                        if (iskey)
                        {
                            columns.Add(colname);
                        }
                    }
                }

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

Discussions similaires

  1. [ODBC] Recherche du champ qui est Primary Key
    Par XtofRoland dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/02/2006, 11h43
  2. PRIMARY KEY - UNIQUE - INDEX
    Par Thierry8 dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/12/2005, 23h28
  3. pb de primary key sur 2 colonnes
    Par new_wave dans le forum Designer
    Réponses: 14
    Dernier message: 25/11/2005, 11h05
  4. DROP PRIMARY KEY
    Par popopopo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/08/2005, 11h11
  5. BDD, r-a-z index et indice primary key ?
    Par lord_paco dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 11/07/2003, 10h24

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