I have three checkboxes on my access database and depending on which ones are checked, I want each row within the Datagridview to be a specific colour.
- True, False, False - Row should be Blue
- False, False, False - Row should be Yellow
- True, True, False - Row should be Red
- True, False, True - Row should be Green
My code below seems to work properly when I filter my database but not when I view all entries (it just makes all rows one colour [yellow]).
Here is the code I've written so far:
private void sJDataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
Color viewModeColour = Color.White; // Default Colour
Color viewModeColourRGB = Color.FromArgb(viewModeColour.R, viewModeColour.G, viewModeColour.B);
foreach (DataGridViewRow row in sJDataGridView.Rows)
{
if (Convert.ToBoolean(row.Cells[14].Value) == true)
{
if (Convert.ToBoolean(row.Cells[15].Value) == true)
{
viewModeColour = Color.FromArgb(0xFF8787); // Red
}
else
{
if (Convert.ToBoolean(row.Cells[16].Value) == false)
{
viewModeColour = Color.FromArgb(0xE3F7FF); // Blue
}
else
{
viewModeColour = Color.FromArgb(0xE5FFCC); // Green
}
}
}
else
{
if (Convert.ToBoolean(row.Cells[15].Value) == false)
{
if (Convert.ToBoolean(row.Cells[16].Value) == false)
{
viewModeColour = Color.FromArgb(0xFFFDCC); // Yellow
}
}
}
viewModeColourRGB = Color.FromArgb(viewModeColour.R, viewModeColour.G, viewModeColour.B);
}
for (int i = 0; i < sJDataGridView.Rows.Count; i++)
{
sJDataGridView.Rows[i].DefaultCellStyle.BackColor = viewModeColourRGB;
}
}
}