2012-06-29 18 views
6

Ho un devexpress xtragrid con 40 colonne. Confronto ogni valore di cella con un altro e, se è diverso, voglio cambiare il colore di sfondo della cella. Provo con GridViewInfo ma prende solo le colonne che sono visibili sullo schermo.Ma voglio fare per tutte le colonne. (Non con RowCellStyle) Hai una soluzione per questo? Grazie!Come cambiare il colore di sfondo di una cella in Devexpress Grid?

risposta

4

Hook sull'evento RowStyle di 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

La funzione di confronto è su un pulsante .Come posso chiamare evento RowStyle? – Lavy

+0

Non è possibile farlo sull'evento clic del pulsante. devi gestire 'RowStyle' o' CustomDrawCell'. metti la loro condizione lì e semplicemente invalida la griglia dopo aver apportato le modifiche a quei dati sul pulsante .. –

+0

L'ho fatto con RowCellStyle.Grazie per l'aiuto! :) – Lavy

5

è necessario gestire la CustomDrawCell del GridView, ecco un elemento di cattura di codice che cambia il colore della colonna Nome, sulla base di un altro valoe colonna (colonna età)

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); 
     } 
    } 

Buona fortuna

Problemi correlati