Spécial datagrid

Résolu
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011 - 12 mars 2011 à 01:28
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 - 13 mars 2011 à 16:35
Salut tout le monde, S'il vous plaît changer la couleur d'une Ligne de mon DATAGRIDVIEW ?? par exemple si la date est inférieur à la date system cette ligne en Rouge !!!!
Merci pour votre aide ! :D
Bonne Journée

7 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
13 mars 2011 à 08:31
Salut poomen

Je ne comprends pas ton probleme,
Si tu filtres des données par une requête, alors toutes les lignes doivent être rouges, donc il suffit de forcer la couleur avant le binding:
DataSet dataset=new DataSet();
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=TEST;Integrated Security=True"); 
SqlDataAdapter adap = new SqlDataAdapter();
adap.SelectCommand = new SqlCommand("SELECT TOP 3 * FROM Matériel WHERE Date_entretien >= GETDATE() ORDER BY Date_entretien;", con); 
adap.Fill(dataset);
dataGridView1.DefaultCellStyle.BackColor = Color.Red;// ici on force la couleur par défaut pour toutes les lignes
dataGridView1.DataSource = dataset.Tables[0]; 


Maintenant si ta requête ne filtre pas, alors tu dois mettre la couleur sur certaines lignes

variable au niveau de la class
int ColumnToCheck = -1; 

quelque part au niveau de l'initialisation, ou via le designer
this.dataGridView1.RowPrePaint += new System.Windows.Forms.DataGridViewRowPrePaintEventHandler(this.dataGridView1_RowPrePaint);


procedure de chargement de la datagridview, la requête prend toutes les lignes
on mémorise le colonne à tester lors de l'affichage
// 
DataSet dataset=new DataSet();
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=TEST;Integrated Security=True"); 
SqlDataAdapter adap = new SqlDataAdapter();
adap.SelectCommand = new SqlCommand("SELECT * FROM Matériel ORDER BY Date_entretien;", con); 
adap.Fill(dataset);
ColumnToCheck = dataset.Tables[0].Columns.IndexOf("Date_entretien"); // on recherche l'index de la colonne à tester
dataGridView1.DataSource = dataset.Tables[0]; 



procedure de pre paint d'une ligne,
pour chaque ligne on teste la valeur de la colonne
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
if (ColumnToCheck !=-1 && dataGridView1.Rows[e.RowIndex].Cells[ColumnToCheck].Value != null)
if ((DateTime)dataGridView1.Rows[e.RowIndex].Cells[ColumnToCheck].Value >= DateTime.Now.Date) 
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
else
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
}

Bob.
C# is amazing, enjoy it!
3
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
12 mars 2011 à 10:14
Salut

Tu dois pouvoir changer le backcolor de la ligne
ex:
 dataGridView1.Rows[RowIndex].DefaultCellStyle.BackColor = Color.Aquamarine;



Bob.
C# is amazing, enjoy it!
0
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
12 mars 2011 à 14:03
ahh , merci pour ta réponse , mais on peut pas savoir la ligne , elle changer en faisant un tri , ce que j'aimerai c'est une astuce pour faire ca , parceque je travaille en ado.net , c # , par exemple , faier la requete dans une variable , avec la condition , la ligne pourra changer de couleur....!!! :D
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
12 mars 2011 à 17:31
Sur l'evenement RowPrePaint, tu testes ta condition sur la ligne en cours et tu bascules la couleur

Ex:
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
    if (dataGridView1.Rows[e.RowIndex].Cells[0].Value != null)
        if ((int)dataGridView1.Rows[e.RowIndex].Cells[0].Value % 2 == 0)
            dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.LavenderBlush;
        else if ((int)dataGridView1.Rows[e.RowIndex].Cells[0].Value % 3 == 0)
            dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Lavender;
        else
            dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
}
Bob.
C# is amazing, enjoy it!
0

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

Posez votre question
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
12 mars 2011 à 23:01
Merci pour ta réponse l'ami...j'ai essayé de comprendre , mais....je te reéxplique j'affliche mes donner dans le datagrid , et je veux que si ma date exam est supérieur ou égal a la date system , ces ligne deviennet en rouge , j'ai essayé de faire la requete mais pour la couleur , j'ai échoué , bon voila mon code
SqlConnection con = new SqlConnection("Data Source=BENDDANE-PC\\SQLEXPRESS;Initial Catalog=GESTION_MATERIEL.MDF;Integrated Security=True");
SqlDataAdapter adap = new SqlDataAdapter();
adap.SelectCommand = new SqlCommand("SELECT TOP 3 * FROM Matériel WHERE Date_entretien >= GETDATE() ORDER BY Date_entretien;", Program.con);
adap.Fill(x);
dataGridView1.DataSource = x.Tables[0];
(et lààà les 3 ligne doivent etre en rouge)
//dataGridView1.DefaultCellStyle.BackColor = Color.rouge;
Merci de vouloir m'aider !! :D
0
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
13 mars 2011 à 13:55
Merci beaucoup ; beaucoup , beaucoup ..........Robert , et encore merci !! :D
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
13 mars 2011 à 16:35
avec plaisir ...

Bob.
C# is amazing, enjoy it!
0
Rejoignez-nous