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

VB.NET Discussion :

datagridview colorer chaque ligne avec une couleur différente


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut datagridview colorer chaque ligne avec une couleur différente
    Bonjour,
    Par exemple je voudrais télécharger une base de données sur le datagridview
    et j'ai les champs suivants (id,nom, prénom)
    et dans l'id il y a les valeurs suivantes :
    1,2,3,4
    et pour chaque valeur de ces valeurs dans le datagridview il y a une couleur différente. Une idée comment faire ?

    Merci de m'aider.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu peux utiliser l'évènement RowPrePaint du DataGridView pour choisir la couleur juste avant que la ligne ne s'affiche :

    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
    Sub DataGridView1_RowPrePaint(ByVal sender As Object, ByVal e As DataGridViewRowPrePaintEventArgs) Handles DataGridView1.RowPrePaint
     
        ' Récupération de la ligne de données
        Dim row As DataRow = CType(DataGridView1.Rows(e.RowIndex).DataBoundItem, DataRow)
     
        ' La logique pour choisir la couleur (à modifier selon ton besoin)
        Dim id As Integer = CType(row("id"), Integer)
        Dim c As Color = Color.White
        Select Case Id
            Case 1
                c = Color.Blue
            Case 2
                c = Color.Red
     
            ...
        End Select
     
        ' Application de la couleur à la ligne
        e.InheritedRowStyle.BackColor = c
     
    End Sub
    Tu peux regarder la doc de l'évènement RowPrepaint pour un autre exemple

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Tu peux utiliser l'évènement RowPrePaint du DataGridView
    Ou, si tu veux différencier certaines cellules de la ligne,en utilisant l'event CellFormatting avec e.CellStyle.BackColor = c

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Ou, si tu veux différencier certaines cellules de la ligne,en utilisant l'event CellFormatting avec e.CellStyle.BackColor = c
    CellPainting serait plus adapté, il me semble... Le rôle de CellFormatting est plutôt de formatter la représentation textuelle de la valeur

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Le rôle de CellFormatting est plutôt de formatter la représentation textuelle de la valeur
    Le nom des events ne sont pas toujours bien choisis
    Je crois que CellPrePainting aurait été plus judicieux.

    Mais, je ne vais pas jeter la pierre aux concepteurs : Ca m'arrive vraiment trop souvent de me dire la même chose pour mes propres classes.

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut
    tu ne comprend pas mon question :
    j'ai une base de données qui a un tableau avec le nom client (id , nom , prénom)
    est je veux recharger les éléments en data-set on mode déconnecter du tableau client qui contient 4 enregistrement .
    1,n1,p1
    2,n2,p2
    3,n3,p3
    4,n4,p4

    après je veux afficher dans une datagridview et chaque enregistrement afficher avec un couleur déférent par exemple
    la ligne : 1,n1,p1 en rouge
    la ligne : 2,n2,p2 en gris
    la ligne : 3,n3,p3 en jaune
    la ligne : 4,n4,p4 en orange

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/08/2013, 12h21
  2. colorer chaque ligne dans une boucle
    Par E_HUGO dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 24/02/2010, 11h33
  3. Réponses: 2
    Dernier message: 23/04/2008, 12h28
  4. Réponses: 7
    Dernier message: 30/10/2007, 16h35
  5. Colorer chaque mot par une couleur differente dans un champ de texte
    Par Mettali hedi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/01/2007, 13h20

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