Colorier ligne datagridview avec condition [Résolu]

- 6 nov. 2012 à 09:29 - Dernière réponse :
Messages postés
642
Date d'inscription
mercredi 10 septembre 2008
Dernière intervention
9 février 2017
- 7 nov. 2012 à 16:21
Bonjour ,
je viens vers vous pour m'aide a trouvé comment je peux faire une condition quand je colorie un ligne d'une datagridview.

Je sais comment pour colorier un ligne ou une cellule d'une datagridview.

Mais avec une condition je ne vois pas Je pense etre fatigué pour ne pas trouvé.

int Point_eclair ;
int temperature ;

J'ai deja fait le speudo code .
Si Point_eclair < temperature - 15
Alors faire colore ligne RED
Si non rien (return)



Si on pourrait me donner des idées ou des pistes de solutions je vous en remercie d'avance.
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
2
Merci
Bon j'ai trouver ma solution desolé pour le flood . . . .
A vous de juger .

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                DataGridViewCell CellulePE = row.Cells["Point_eclaire"];
                DataGridViewCell CelluleTU = row.Cells["Temperature_utilisation"];
                int cellulePEValue = Convert.ToInt32(CellulePE.Value.ToString());
                int celluleTUValue = Convert.ToInt32(CelluleTU.Value.ToString());
                if (cellulePEValue < celluleTUValue -15)
                {
                    row.DefaultCellStyle.ForeColor = Color.Blue;
                }
                else
                {
                    row.DefaultCellStyle.ForeColor = Color.Red;
                }
            }
        }


Je vais décrire un peu le code ci dessous .
J'utlise l'evenement DataBindingComplete qui sert en cas de modification de la liste de la sources de données .
Avec
foreach (DataGridViewRow row in dataGridView1.Rows)


Je vais regardé une part une les lignes de ma DgView

Je mets dans des variables les champs que je veux puis je les cast (transformation d'un type a un autre)
Je cast en string en in .
Je fais ma condition puis je colorie la ligne avec
row.DefaultCellStyle.ForeColor = Color.Blue;



Merci pour vos réponces et des ressources de ce forum que j'adore de plus en plus .

Merci thefolin 2

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de thefolin
Messages postés
642
Date d'inscription
mercredi 10 septembre 2008
Dernière intervention
9 février 2017
- 6 nov. 2012 à 10:13
0
Merci
Salut,

Voici un post où tu auras un début de réponse ici

@+

S.D
Commenter la réponse de dodo7263
0
Merci
Merci j'avais lus ce message c 'est comme sa que j'arrive mtn a colorier mes ligne ou mes cellules mais je vois pas comment mettre un condition pour colorier certaine ligne .
Dans mon cas c est comparer deux colones et si l'une d'elle est plus grand que l'autre alors colorier ligne si non rien
Mais merci pour ce lien
Commenter la réponse de thefolin
Messages postés
642
Date d'inscription
mercredi 10 septembre 2008
Dernière intervention
9 février 2017
- 6 nov. 2012 à 10:48
0
Merci
Re,

De mes lointains souvenirs, j'ai pas testé ce bout de code car pas trop le temps mais un truc du genre :

for (int i 0; i < dataGridView1.RowCount; i++) if (dataGridView1["Infoencours", i].Value.ToString() "True")
{
dataGridView1.Rows[i].DefaultCellStyle.ForeColor = Color.Blue;
dataGridView1.Refresh();
}


C'est une piste. Ya des adaptation à faire pour toi certainement.
@+

SD
Commenter la réponse de dodo7263
0
Merci
J'ai trouvé ce lien aussi mais je comprend plus rien sa fait la journée entier que je me penche sur le probleme je devient fous
ICI

JE vais essaye d'explique ce que je ve faire d'une autre maniere.

L'utilisateur saisie des données qui vont etre stocke ds une BDD et que je fais visualiser grace au dataGridView.La pour l'instant c'est good .

La demande du client est de faire apparaitre en ligne rouge quelque données saisie.
La condition que pour ces lignes devienne rouge est si le Point_eclaire < Température
alors ligne rouge .

Le probleme est que j'arrive pas a comparer deux colones entre elles puis faire quelle soit rouge .

Meme faire une comparaisons par cellule négatif .

Je pense qu'il faut faire une boucle for pour check le tableau puis faire les if mais je vois plus comment faire la
Commenter la réponse de thefolin
Messages postés
642
Date d'inscription
mercredi 10 septembre 2008
Dernière intervention
9 février 2017
- 6 nov. 2012 à 15:38
0
Merci
Allez encore un lien sur la comparaison de cellule de datagridview ici

@+

SD
Commenter la réponse de dodo7263
0
Merci
J'ai peut etre trouver une solution pouvez vous juger et apporter votre aide sur mon idée ?
      
 DataGridViewCell Cellule_pt = rows.Cells["Point_eclaire"];
      DataGridViewCell Cellule_tu = rows.Cells["Temperature_utilisation"];
        if (Cellule_pt < Cellule_tu)
        { // Ici je fais colorier ligne rouge ou les cellule }


Le probleme est que je peux faire une egalité dans mon IF mais pas de comparaisons .

L'idée est bien ou pas ?

cordialement thefolin
Commenter la réponse de thefolin
0
Merci
Si non il y a l'idée de recuper les valeurs des champs et de les comparer mais j'ai toujours le meme probleme faire la comparaisons .
C'est moi ou mais idée ne tienne pas la route ?

  int i=0;
      object pe = (dataGridView1["Point_eclaire",i].Value);
       object pt = (dataGridView1["Temperature_utilisation",i].Value);
       if (pe=<pt)
                {
                //colorier en rouge 
                }
Commenter la réponse de thefolin
0
Merci
J'ai trouve une solution pour mon probleme de comparaison . . .
Dans un if il faut tjr comparais des INT donc je doit convertire un Objet en int grace aux sujet que j'ai trouvé Ici
Mais je n'arrive pas a l'appliquer.
Soit j'applique la methode
int32.Parse(pe.Tostring())
et un jolie message d'erreur apparait."La référence d'objet n'est pas définie a une instance d'un objet."

J'ai appliquer les autres methodes est erreur encore .

Voci mon code pour plus de compréhension
          object pe = (dataGridView1["Point_eclaire", i].Value);
          object pt = (dataGridView1["Temperature_utilisation", i].Value);
 int Pt_cl = Int32.Parse(pe.ToString());  
 int Tp_ut = Int32.Parse(pt.ToString());

    if (Pt_cl < Tp_ut-15)// le moin -15 est normal je fais temperarure -  15°C(si il fait 30° il fera 15°C en fait)
                   {
//code pour colorier  
   }
Commenter la réponse de thefolin
Messages postés
642
Date d'inscription
mercredi 10 septembre 2008
Dernière intervention
9 février 2017
- 7 nov. 2012 à 16:21
0
Merci
Salut,

Bon ben ça me parait pas mal.
Merci d'avoir mis ta solution, ça pourra peut être servir à d'autres qui ont le même problème.

@+ bon dev

SD
Commenter la réponse de dodo7263

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.