Colorier ligne datagridview avec condition

Résolu
thefolin - 6 nov. 2012 à 09:29
dodo7263 Messages postés 614 Date d'inscription mercredi 10 septembre 2008 Statut Membre 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.

10 réponses

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 .
2
dodo7263 Messages postés 614 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 9 février 2017 6
6 nov. 2012 à 10:13
Salut,

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

@+

S.D
0
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
0
dodo7263 Messages postés 614 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 9 février 2017 6
6 nov. 2012 à 10:48
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
0
dodo7263 Messages postés 614 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 9 février 2017 6
6 nov. 2012 à 15:38
Allez encore un lien sur la comparaison de cellule de datagridview ici

@+

SD
0
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
0
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 
                }
0
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  
   }
0
dodo7263 Messages postés 614 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 9 février 2017 6
7 nov. 2012 à 16:21
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
0
Rejoignez-nous