Cómo cambiar el color de la fila en datagridview
Me gustaría cambiar el color de una fila particular en mi vista de cuadrícula de datos. La fila debe cambiarse a rojo cuando el valor de la celda 7 es menor que el valor de la celda 10. ¿Alguna sugerencia sobre cómo lograr esto?
Debe recorrer las filas en la vista de cuadrícula de datos y luego comparar los valores de las columnas 7 y 10 en cada fila.
Prueba esto:
foreach (DataGridViewRow row in vendorsDataGridView.Rows)
if (Convert.ToInt32(row.Cells[7].Value) < Convert.ToInt32(row.Cells[10].Value))
{
row.DefaultCellStyle.BackColor = Color.Red;
}
Estaba investigando este problema (sé que esta pregunta se publicó hace casi 3 años, pero tal vez ayude a alguien...) pero parece que una mejor opción es colocar el código dentro del RowPrePaint
evento para que no Tienes que recorrer cada fila, solo aquellas que se pintan (por lo que funcionará mucho mejor con una gran cantidad de datos):
Adjuntar al evento
this.dataGridView1.RowPrePaint
+= new System.Windows.Forms.DataGridViewRowPrePaintEventHandler(
this.dataGridView1_RowPrePaint);
El código del evento
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
if (Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[7].Text) < Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[10].Text))
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Beige;
}
}
Estás buscando el CellFormatting
evento.
Aquí hay un ejemplo.