Autor Beitrag
chrisachern
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mo 25.06.07 10:26 
hallo zusammen.

habe ein problem mit einer datagridview. ich versuche einzelne reihen mit einer anderen hintergrundfarbe zu füllen. das setzen der farbe fuktioniert auch. aber leider ändert sich die hintergrundfarbe erst, wenn ich die tabpage, auf der das datagridview ist, ein zweites mal auswähle. warum wird die hintergrundfarbe nicht beim ersten mal geändert?


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
public static void fillDGV(DataGridView datagridview)
        {
            Connection.Connection con = Connection.Connection.getInstance();
            SqlConnection sqlcon = con.Sqlcon;
            SqlCommand sqlcom = new SqlCommand("SELECT unterweisender,zeit,statusword,anzahlzuhörer " +
                "FROM tbleigenschaft", sqlcon);
            SqlDataAdapter da = new SqlDataAdapter();

            da.SelectCommand = sqlcom;
            DataSet ds = new DataSet();
            da.Fill(ds);

            if (ds.Tables != null)
            {
                datagridview.DataSource = ds.Tables[0];
            }

            foreach (DataGridViewRow row in datagridview.Rows)
            {
                try
                {
                    DateTime buffer;

                    if (row.Cells["zeit"].Value != null)
                    {
                        buffer = DateTime.Parse(row.Cells["zeit"].Value.ToString());

                        //hier farbe ändern

                        if (buffer.Date.ToString() == DateTime.Today.ToString())
                        {
                            row.DefaultCellStyle.BackColor = System.Drawing.Color.Red;
                        }
                        else
                        {
                            row.DefaultCellStyle.BackColor = System.Drawing.Color.White;
                        }
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, e.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }


Moderiert von user profile iconmatze: C#-Tags hinzugefügt
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: Sa 30.06.07 13:14 
Schaue dir mal InvalidateRow an, damit sagst du dem System, dass der Bereich der Row neu gezeichnet werden soll.

Ist aber ziemlich lahm auf die Art. Erst wird er normal gezeichnet und danach nochmal mit einer anderen Hintergrundfarbe.
Wobei im DGV selbst das erste Zeichnen furchtbar langsam ist...