Victor Charles
asked on
Help with changing DataBridView's cell colors for unmatching data
Hi,
I'm trying to use the code below to change the backcolor and textcolor of cell where the values are different when comparing rows as I loop through the Grid, but I receive the follow error:
Operator '=' is not defined for type 'DBNull' and type 'DBNull'.
For example (More columns in actual project) if my grid contains four rows the following columns:
CTRY Item
BEL BMW
BEL Toyota
USA Jeep
USA Jeep
I would like to change the color of the item column for the first two rows because the data in the Item column is not the same.
Code:
Thanks,
Victor
I'm trying to use the code below to change the backcolor and textcolor of cell where the values are different when comparing rows as I loop through the Grid, but I receive the follow error:
Operator '=' is not defined for type 'DBNull' and type 'DBNull'.
For example (More columns in actual project) if my grid contains four rows the following columns:
CTRY Item
BEL BMW
BEL Toyota
USA Jeep
USA Jeep
I would like to change the color of the item column for the first two rows because the data in the Item column is not the same.
Code:
Dim i, j As Integer
For i = 1 To C1Screen2.Rows.Count - 1
For j = 1 To C1Screen2.Columns.Count - 1
If C1Screen2.Rows(i - 1).Cells("CTRY").Value = C1Screen2.Rows(i).Cells("CTRY").Value Then
If Not C1Screen2.Rows(i - 1).Cells(j).Value = C1Screen2.Rows(i).Cells(j).Value Then
C1Screen2.Rows(i - 1).Cells(j).Style.BackColor = Drawing.Color.Red
C1Screen2.Rows(i - 1).Cells(j).Style.ForeColor = Drawing.Color.White
C1Screen2.Rows(i).Cells(j).Style.BackColor = Drawing.Color.Red
C1Screen2.Rows(i).Cells(j).Style.ForeColor = Drawing.Color.White
Else
C1Screen2.Rows(i - 1).Cells(j).Style.BackColor = Drawing.Color.Blue
C1Screen2.Rows(i - 1).Cells(j).Style.ForeColor = Drawing.Color.White
C1Screen2.Rows(i).Cells(j).Style.BackColor = Drawing.Color.Blue
C1Screen2.Rows(i).Cells(j).Style.ForeColor = Drawing.Color.White
End If
End If
Next
Next
I used this code a while back in a different project not certain why it's not working now,Thanks,
Victor
ASKER
Hi,
I tried you approach but received error message:
Operator '=' is not defined for string " L534A1" and type default. (L534A1 is the value in first row of the third column)
On Line :
If Not C1Screen2.Rows(i - 1).Cells(j).Value = C1Screen2.Rows(i).Cells(j) .Value Then
Thanks.
I tried you approach but received error message:
Operator '=' is not defined for string " L534A1" and type default. (L534A1 is the value in first row of the third column)
On Line :
If Not C1Screen2.Rows(i - 1).Cells(j).Value = C1Screen2.Rows(i).Cells(j)
Thanks.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks, will try it and get back to you.
ASKER
Hi,
When I add If C1Screen2.Rows(i).IsNewRow Then in my code thge error does not occur but
If Not C1Screen2.Rows(i - 1).Cells(j).Value = C1Screen2.Rows(i).Cells(j) .Value Then
does not execute.
I tried you code but it does not consider that the SN values must be the same before comparing the rows, is there a way to modify it to work only for identical SN values?
For example If I have:
SN CTRY Item
10411 BEL BMW
10411 BEL Toyota
10421 USA Jeep
10451 USA Jeep
Only the first two rows should be compared because they both have SN = 10411. Also Is it possible to only change the color of the cells that do not match instead of the entire row.
Thanks,
Victor
Thanks,
Victor
When I add If C1Screen2.Rows(i).IsNewRow
If Not C1Screen2.Rows(i - 1).Cells(j).Value = C1Screen2.Rows(i).Cells(j)
does not execute.
I tried you code but it does not consider that the SN values must be the same before comparing the rows, is there a way to modify it to work only for identical SN values?
For example If I have:
SN CTRY Item
10411 BEL BMW
10411 BEL Toyota
10421 USA Jeep
10451 USA Jeep
Only the first two rows should be compared because they both have SN = 10411. Also Is it possible to only change the color of the cells that do not match instead of the entire row.
Thanks,
Victor
Thanks,
Victor
ASKER
Thank You.
If C1Screen2.Rows(i - 1).Cells("CTRY").Value = C1Screen2.Rows(i).Cells("C
as below
If Not IsDBNull( C1Screen2.Rows(i - 1).Cells("CTRY").Value) AND Not IsDBNull(C1Screen2.Rows(i)