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

Windows Forms Discussion :

Coloré les lignes d'un datagridview


Sujet :

Windows Forms

  1. #1
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut Coloré les lignes d'un datagridview
    Bonjour, je veux colorer les lignes du datagrid view suivant le type de la ligne, par exmple si le type de la fonction d'une ligne donnée est enseignant alors c en vert, sinon en rouge, au remplissage j'ai fais comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dgv1.DataSource = dt2;
                  dgv1.RowHeadersVisible = false;
                  foreach (DataGridViewColumn col in dgv1.Columns)
                    {col.SortMode = DataGridViewColumnSortMode.Automatic;
                     col.Width = 150;
                     col.DefaultCellStyle.BackColor = Color.LightGreen;
                     col.DefaultCellStyle.Font = new Font("Tahoma", 9, FontStyle.Bold);
                     col.ReadOnly = true;
                    }
    Merci beaucoup

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Points : 320
    Points
    320
    Par défaut
    Salut,

    Tu peux parcourir les lignes de ton DataGridView de la même manière que tu parcours les colonnes dans ton exemple. Si la colonne "Fonction" de la ligne contient "Enseignant" tu mets la couleur à vert, sinon tu mets rouge.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    foreach (DataGridViewRow currentRow in monDataGridView.Rows)
    {
         if (currentRow.Cells["Fonction"].Value) == "Enseignant")
         {
              currentRow.DefaultCellStyle.ForeColor = Color.Green;
         }
         else
         {
              currentRow.DefaultCellStyle.ForeColor = Color.Red;
         }
    }
    ++

  3. #3
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par SesechXP Voir le message
    Salut,

    Tu peux parcourir les lignes de ton DataGridView de la même manière que tu parcours les colonnes dans ton exemple. Si la colonne "Fonction" de la ligne contient "Enseignant" tu mets la couleur à vert, sinon tu mets rouge.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    foreach (DataGridViewRow currentRow in monDataGridView.Rows)
    {
         if (currentRow.Cells["Fonction"].Value) == "Enseignant")
         {
              currentRow.DefaultCellStyle.ForeColor = Color.Green;
         }
         else
         {
              currentRow.DefaultCellStyle.ForeColor = Color.Red;
         }
    }
    ++

    Est ce que je vais mettre ce foreach a l'interieur du 1er, parceque mon datagriview reste vide.
    Merci enormement

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Points : 320
    Points
    320
    Par défaut
    Le bout de code que je t'ai donné fonctionne si ton DataGridView est déjà rempli. Donc tu l'insères après le remplissage si tu veux mais pas dans la boucle foreach de ton premier message. D'ailleurs je ne vois pas trop l'intérêt de mettre toutes les colonnes en vert...

    Si ta source de données est une base de données je ferais plutôt :
    1- remplissage,
    2- parcours des lignes et coloriage

    Si tu insères des éléments à la main dans ton DataGridView je ferais la construction du row avec le test sur la "Fonction" qui détermine la couleur et après l'insertion.

    ++

  5. #5
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Utilise l'évenement CellPaint.

  6. #6
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par abbd Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dgv1.DataSource = dt2;
                  dgv1.RowHeadersVisible = false;
                  foreach (DataGridViewColumn col in dgv1.Columns)
                    {col.SortMode = DataGridViewColumnSortMode.Automatic;
                     col.Width = 150;
                     col.DefaultCellStyle.BackColor = Color.LightGreen;
                     col.DefaultCellStyle.Font = new Font("Tahoma", 9, FontStyle.Bold);
                     col.ReadOnly = true;
                    }
    Déjà, si tu parcours les colonnes de ton dgv, tu vas avoir du mal à colorer des lignes de couleurs différentes...
    En plus si tu nous dis que ton dgv reste vide, c'est qu'il doit y avoir un problème autre part.

    Montre-nous un peu plus de code sinon, on ne pourra pas t'aider.

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    Bonjour, j'avais besoin aussi de colorer certaines lignes de mon Dgv.
    Et ce bout de code me convient parfaitement, reste tout de meme un petit souci:
    En effet à l'execution j'ais une levé d'exception :

    "la reference d'objet n'est pas définie a une instance d'un objet "

    je ne voies pas l'objet non instancié,

    je rappel le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach (DataGridViewRow currentRow in  Dgv_Resultat.Rows)
    {                
           if (currentRow.Cells["modif"].Value.ToString() == "1")
           {
              currentRow.DefaultCellStyle.BackColor = Color.Aqua;
           }
                        
     }
    Merci de votre aide.

  8. #8
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 254
    Points
    28 254
    Par défaut
    currentRow.Cells["modif"].Value.
    c'est ca qui est vide. utilise le mode DEBUG, tu trouveras plus facilement et surtout tout seul, les problemes de ce genre

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    Bonjour, je suis resté tout de meme plusieurs heures sur le probleme avant de poster ,j'ais donc bien essayé de chercher tout seul avec le mode DEBUG,sans succès.
    j'ais placé des points d'arret un peu partout, mais il y a tellement de propriété.

    Merci à vous.

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    Alors là c'est vraiment etrange puisque j'ais corriger le Beug en retirant le "value", mais du coup les coleurs ne s'affichent plus.

    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
     
    DgResultat.Columns["modif"].Visible = false;
    DgResultat.Columns["ajout"].Visible = false;
     
    foreach (DataGridViewRow currentRow in DgResultat.Rows)
     {
         if (currentRow.Cells["ajout"].ToString() != "1") {
            if (currentRow.Cells["modif"].ToString() == "1")
                 currentRow.DefaultCellStyle.BackColor = Color.SkyBlue;
         }else{
            if (currentRow.Cells["modif"].ToString() == "1")
                 currentRow.DefaultCellStyle.BackColor = Color.Yellow;
             else
                 currentRow.DefaultCellStyle.BackColor = Color.Orange;
          }
    }
    Mais lorsque j'affiche les colonnes "ajout et modif" les couleurs reviennent à la seule condition que je scrolle horizontallement pour atteindre ces deux colonnes.

    Si quelqu'un pouvait m'eclairer, il serait la bienvenue.

  11. #11
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    Cet instruction If n'a pas son else:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
       if (currentRow.Cells["modif"].ToString() == "1")
                 currentRow.DefaultCellStyle.BackColor = Color.SkyBlue ;
    else currentRow.DefaultCellStyle.BackColor =...
    };

  12. #12
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    Bonjour Graffito et merci de t'interresser à mon probleme.
    Rien ne change ,meme en en ajoutant l'instruction else.
    Bon c'est pas grave je continu avec mon code erroné, puisqu'il marche bien.Je devrais juste commenter le messagebox d'erreur de mon Try,pour ne plus voir ce message insupportable .

    De plus je ne comprends pas pourquoi je dois scroller jusqu'au colonnes "ajout et modif" pour voir mes lignes changer de couleur.

  13. #13
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    rajoutes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(currentRow.IsNewRow == false)
    {
        traitement...
    }
    J'ai eu de TRES nombreuses exceptions levées car je faisais des traitements sur la dernière row du DataGridView. Ce code te permet de ne pas faire de traitements sur la dernière row (celle qui est vide à la fin et qui n'a pas du tout les mêmes propriétés que les autres).
    Je l'ai ensuite inclut dans la plupart de mes méthodes parcourant les rows de dataGridView.

  14. #14
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 49
    Points : 24
    Points
    24
    Par défaut
    Bonjour Contrec,
    merci , c'etait bien ca le probleme.

  15. #15
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    De rien je servirai au moins à quelque chose aujourd'hui (après les 50 messages que j'ai posté aujourd'hui).

    N'oublies pas le tag Résolut c'est gratuit.

Discussions similaires

  1. colorer les lignes d'un datagridview avec RowPrePaint
    Par gastoncs dans le forum VB.NET
    Réponses: 2
    Dernier message: 23/04/2015, 23h41
  2. [code VC++]Tirer les lignes d'un DataGridView à l'insertion
    Par Thor Tillas dans le forum Visual C++
    Réponses: 1
    Dernier message: 30/05/2007, 13h58
  3. [VB.NET]Comment supprimer les lignes d'un datagridView
    Par vijeo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/09/2006, 17h54
  4. [VBA-E] Colorer les lignes sous-total
    Par steps5ive dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/07/2006, 18h47
  5. [VB 2005] Supprimer toutes les lignes d'un DataGridView
    Par Bob Langlade dans le forum Windows Forms
    Réponses: 4
    Dernier message: 25/01/2006, 16h03

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