Cómo cambiar el color de la fila en datagridview

Resuelto EB. asked hace 14 años • 20 respuestas

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?

EB. avatar Feb 03 '10 10:02 EB.
Aceptado

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; 
     }
Ricardo Sanchez avatar Feb 03 '2010 15:02 Ricardo Sanchez

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 RowPrePaintevento 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;
    }
}
Eden avatar Oct 21 '2012 14:10 Eden

Estás buscando el CellFormattingevento.
Aquí hay un ejemplo.

SLaks avatar Feb 03 '2010 03:02 SLaks