2009-08-31 75 views
6

Tengo un DataGridView que se completa estableciendo su DataSource en un enlace de datos.C# /. NET cómo resaltar ciertas filas en DataGridView

Ahora quiero tener ciertas filas en el DataGridView que tengan Backgroundcolor diferente según algún valor en la misma fila.

¿Cómo puedo lograr esto?

+0

creo que se puede encontrar algo de información útil a partir de esta pregunta. http://stackoverflow.com/questions/1078782/c-iterate-over-datagridview-change-row-color – rahul

Respuesta

7

Hay un gran ejemplo here.

El concepto es que se suscribe a los eventos de la red. Cuando se llena una celda, se desencadena un evento y en función del valor puede formatear la celda, etc.

1

En el controlador de eventos CellFormatting de su datagridview, puede establecer el color predeterminado para cualquier fila que desee.

private void MyDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
    { 

     if (e.RowIndex == rowIndexToHighlight) 
     { 
      e.CellStyle.BackColor = Color.Green; 
     } 

    } 
+1

-1 porque este ejemplo tiene muy pocas implicaciones de rendimiento. Si utiliza enlace de datos, entonces la cuadrícula de datos necesitará mantener registros duplicados de filas. El ejemplo de Psasik evita deshacer filas. – Kleinux

+0

@Kleinux: Ese es un comentario interesante sobre el mantenimiento de registros duplicados de filas. ¿Podría explicar por qué esto es así? Gracias – Andy

+1

Si mira en los documentos, se mencionarán filas compartidas y no compartidas. El código anterior obliga a la vista de cuadrícula a crear registros de DataGridViewRow reales para cada fila en su origen de datos. Estas filas no son duplicadas en el sentido de los valores de celda, todavía puede leer la fuente de datos para eso, pero de lo contrario no deberían existir debido a la información de estilo requerida ahora. Espero haber hecho mi comentario un poco más claro. Este es un buen tutorial http://msdn.microsoft.com/en-us/library/ha5xt0d9.aspx – Kleinux

1

Puede utilizar el RowPrePaint para cambiar el color o el estilo de toda la fila

Cuestiones relacionadas