I would like to format a gridview based on comparing the current row value (column 2) with the previous row value. So if they are the same the background color would be that same, say green. If they are not the same the background color would be red. For example:
Gridview values
Car 1 (bg color green)
Car 1 (bg color green)
Car 2 (bg color red)
Car 3 (bg color green)
Car 3 (bg color green)
Car 3 (bg color green)
I have not been able to get this to work. Here is the code I came up with.
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
If e.Row.RowType = DataControlRowType.DataRow Then
If Not e.Row.DataItem Is Nothing Then
'switch for first row
If e.Row.RowIndex = 1 Then
Dim Gprev As GridViewRow = GridView1.Rows(e.Row.RowIndex - 1)
If Gprev.Cells(1).Text = e.Row.Cells(1).Text Then
'e.Row.Cells(1).Text = ""
e.Row.BackColor = Drawing.Color.Red
End If
End If
'now continue with the rest of the rows
If e.Row.RowIndex > 1 Then
'set reference to the row index and the current value
Dim intC As Integer = e.Row.RowIndex
Dim lookfor As String = e.Row.Cells(1).Text
'now loop back through checking previous entries for matches
Do
Dim Gprev As GridViewRow = GridView1.Rows(intC - 1)
If Gprev.Cells(1).Text = e.Row.Cells(1).Text Then
'e.Row.Cells(1).Text = ""
e.Row.BackColor = Drawing.Color.Red
End If
intC = intC - 1
Loop While intC > 0
End If
End If
End If
End Sub
Code in c# but hopefully easy enough to translate…
In RowDataBound…
Note also green & red aren’t generally good choices for contrast with each other (colour blindness)