02/04/12

Cambiare dinamicamente il colore di una riga di una Datagridview in base al valore di una cella

A volte nella gestione di una datagridview si ha la necessità di cambiare il colore di una datagridview in base ad un valore di una cella.
Es. se una colonna contiene il valore “1” colora la riga di rosso.
Questa cosa viene gestita nell’evento CellValueChanged della griglia se vogliamo che il cambiamento avvenga a seguito di una modifica manuale di un valore.
Ecco un semplice esempio di codice:

Private Sub myDataGridView_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs)
Dim colIndex As Integer = e.ColumnIndex


Dim rowIndex As Integer = e.RowIndex


If rowIndex >= 0 And colIndex >= 0 Then


Dim theRow As DataGridViewRow = dataGridView1.Rows(rowIndex)


If theRow.Cells(colIndex).Value.ToString() = "1" Then


theRow.DefaultCellStyle.BackColor = Color.Red


End If


End If


End Sub


Se invece vogliamo gestire le righe della datagridview di colore di verso al momento del binding, ossia della associazione della griglia al datatable dobbiamo gestire l’evento cellformatting.
Ecco un esempio di codice da inserire nell’evento CellFormatting. Se la colonna numero vale zero la riga si colorerà di rosso altrimenti di bianco.



Dim rowIndex As Integer = e.RowIndex

If rowIndex >= 0 Then

Dim theRow As DataGridViewRow = DataGridView1.Rows(rowIndex)

If theRow.Cells("NUMERO").Value.ToString() = "0" Then

theRow.DefaultCellStyle.BackColor = Color.Red
Else
theRow.DefaultCellStyle.BackColor = Color.White

End If

End If

Nessun commento:

Posta un commento

Cosa ne pensi?