2012-06-29 52 views
6

Tengo una xtragrid devexpress con 40 columnas. Comparo cada valor de celda con otro y si es diferente, entonces quiero cambiar el color de fondo de la celda. Lo intento con GridViewInfo pero solo toma las columnas que están visibles en la pantalla. Pero quiero hacer para todas las columnas. (No con RowCellStyle) ¿Tiene una solución para eso? ¡Gracias!¿Cómo cambiar el color de fondo de una celda en Devexpress Grid?

Respuesta

4

Enganche al evento RowStyle de su xtragrid.

private void maintainDataControl_RowStyle(object sender, RowStyleEventArgs e) 
{ 
    if (e.RowHandle >= 0) 
    { 
     GridView view = sender as GridView; 

     // Some condition 
     if((string)view.GetRowCellValue(
      e.RowHandle, view.Columns["SomeRow"]).Equals("Some Value")) 
     { 
      e.Appearance.BackColor = Color.Green; 
     } 
    } 
} 
+0

función de la comparación es en un botón .¿Cómo puedo llamar RowStyle evento? – Lavy

+0

No puede hacer esto al hacer clic en evento de botón. debe manejar 'RowStyle' o' CustomDrawCell'. poner su condición allí y simplemente invalidar la grilla después de hacer cambios a esa información en el botón. –

+0

Lo he hecho con RowCellStyle. Gracias por su ayuda :) – Lavy

5

que necesita para manejar la CustomDrawCell de su GridView, aquí es un recorte de código que cambia el color de la columna Nombre, basado en otro valoe columna (columna de edad)

private void gridView_CustomDrawCell(object sender, RowCellCustomDrawEventArgs e) 
    { 
     if (e.Column == colName) 
     { 
      var age = Convert.ToInt32(gridView.GetRowCellValue(e.RowHandle, colAge)); 
      if (age < 18) 
       e.Appearance.BackColor = Color.FromArgb(0xFE, 0xDF, 0x98); 
      else 
       e.Appearance.BackColor = Color.FromArgb(0xD2, 0xFD, 0x91); 
     } 
    } 

Buena suerte

Cuestiones relacionadas