Проблема в вашем for
цикле.
Сначала вы привязываете данные к вашему обзору данных.
Тогда вы входите в цикл
Внутри него вы спрашиваете, выполняется ли условие, и если это вы, СНОВА связываете те же данные с сеткой данных, но после этого вы окрашиваете их.
Цикл For продолжается и снова входит в часть, где он удовлетворяет условию, и СНОВА вы связываете те же данные, но теперь вы перезаписываете цветные данные новыми (но такими же) данными, а затем окрашиваете новую строку.
Так что вам нужно сделать, это
- Загрузка данных в просмотр данных
- Цикл просмотра строк данных и, если соответствует условию, цвет этой строки
Таким образом, код должен выглядеть следующим образом:
//Here you bind your data to datagridview
//In code bellow if you want to get row's column's data use
//row.Cells["CELL_VALUE"].Value (convert to what datatype you need before comparing)
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (condition)))
{
dataGridView1.Rows[row.Index].DefaultCellStyle.BackColor = Color.Red;
}
}