Changer la coleur d'une ligne datagriview

Signaler
Messages postés
52
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
14 mai 2020
-
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
-
Bonjour les amis,
J'ai un souci avec mon code : une nuit n'a pas était suffisante alors je viens vers vous.
En bref : J'ai besoin de changer la couleur de toute une ligne du datagriview en fonction du contenu.
Voila comment j'ai procédé
public void dgBoundItems()
        {
           int Le_Contenu_De_Cellule;  
               for (int i = 0; i < dataGridView1.RowCount -1 ; i++) // -1 pour éviter la lecture de la ligne vide 
               {
                   Le_Contenu_De_Cellule = Convert.ToInt32 (dataGridView1 [10, i].Value.ToString());// récupération du contenu de chaque cellule 
                   if (Le_Contenu_De_Cellule <= 30)
                   {
                        //Changer  le contenu la couleur de toute la ligne concerné 
                        //s'il y a 10 valeur qui  répond au critère alors mettre en     rouge                la             ligne  entière 
                   }

                  
                   
                   dataGridView1.Refresh ();
               }
           }


Merci pour votre temps

EDIT: Précision du langage dans la coloration syntaxique.

2 réponses

Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
1
Bonjour,
Comment votre datagrid est-il rempli ?
Messages postés
52
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
14 mai 2020

dt.Tableau.DataSource = db.dt.Tables[0];
En bref grâce à une requête
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
1
J'ai eu le même problème. La solution consiste à utiliser l'événement CellFormatting. Je n'ai pas de code sous la main pour l'instant mais je vais y regarder si ça ne va tjrs pas...
Messages postés
52
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
14 mai 2020

 private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
foreach (DataGridViewRow item in dataGridView1.Rows)
{

if(item.Cells[2].Value.ToString () =="TOTO")
{
item.DefaultCellStyle.BackColor = Color.Red;
}


}
}
}


Voila je viens de faire la copie conforme de votre code du coup j'ai une exception : La référence d'objet n'est pas définie à une instance d'un objet (ligne en gras)
Quelle peut être la cause ?
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
1
La cellule 2 existe bien ? (les numéros des cellules commencent à 0 !)
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
1
Voici le code que j'ai finalement trouvé pour une ligne entière (cellformating ne fonctionnant que pour une cellule à la fois et au fur et à mesure)

        private void DataGridView_Temps_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            foreach (DataGridViewRow item in DataGridView_Temps.Rows)
            {
                if (item.Cells["Ma_Colonne"].Value.ToString() == "Ma_Valeur")
                {
                    item.DefaultCellStyle.BackColor = Color.Red;
                }
            }
        }
Messages postés
52
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
14 mai 2020

Merci pour le code edwinzap je reviens vers vous bientôt