Changer la coleur d'une ligne datagriview

levotre123
Messages postés
52
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
14 mai 2020
- Modifié par Whismeril le 6/07/2015 à 11:21
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
- 7 juil. 2015 à 13:25
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

edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
6 juil. 2015 à 11:26
Bonjour,
Comment votre datagrid est-il rempli ?
0
levotre123
Messages postés
52
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
14 mai 2020

6 juil. 2015 à 14:19
dt.Tableau.DataSource = db.dt.Tables[0];
En bref grâce à une requête
0
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
6 juil. 2015 à 14:40
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...
0
levotre123
Messages postés
52
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
14 mai 2020

Modifié par levotre123 le 6/07/2015 à 16:53
 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 ?
0
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
7 juil. 2015 à 13:25
La cellule 2 existe bien ? (les numéros des cellules commencent à 0 !)
0
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
Modifié par edwinzap le 6/07/2015 à 15:30
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;
                }
            }
        }
0
levotre123
Messages postés
52
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
14 mai 2020

6 juil. 2015 à 16:31
Merci pour le code edwinzap je reviens vers vous bientôt
0