在 VB.NET 中避免 DBNull?
Posted
技术标签:
【中文标题】在 VB.NET 中避免 DBNull?【英文标题】:Avoid DBNull in VB.NET? 【发布时间】:2021-10-02 04:48:29 【问题描述】:我想根据条件更改 GridView 中单元格的颜色。如果年龄小于 70,则单元格背景颜色将为 Color.Pink
,否则为 Color.Lime
。我在 SQL Server 中有一个表,其中包含 Age
列,数据类型为 nvarchar(20)
。这是我的代码:
Private Sub GridView1_RowCellStyle(sender As Object, e As RowCellStyleEventArgs) Handles GridView1.RowCellStyle
Try
If e.Column.FieldName = "Age" Then
If e.CellValue < 70 Then
e.Appearance.BackColor = Color.Pink
ElseIf e.CellValue = "" Then
e.Appearance.BackColor = Color.White
Else
e.Appearance.BackColor = Color.Lime
End If
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
它正在工作,但是每次读取Age
列中没有值的行时,它都会给我错误operator '<' is not defined for type 'dbnull' and type 'integer'
。所以我添加了ElseIf e.CellValue = "" Then
来检查是否有一行没有价值,但它仍然给我同样的错误。我可以使用Try Catch
绕过错误,但我想解决这个问题,因为它可能会在将来带来问题。
截图:
【问题讨论】:
看看这个有类似问题的答案here,类似于If NOT IsDbNull(e.CellValue) Then ...
【参考方案1】:
您可以放心地忽略空(Nothing 和 DBNull.Value)值,如下所示:
Private Sub GridView1_RowCellStyle(sender As Object, e As RowCellStyleEventArgs) Handles GridView1.RowCellStyle
If e.CellValue Is Nothing OrElse e.CellValue Is DBNull.Value Then Return
'Try
If e.Column.FieldName = "Age" Then
If e.CellValue < 70 Then
e.Appearance.BackColor = Color.Pink
ElseIf e.CellValue = "" Then
e.Appearance.BackColor = Color.White
Else
e.Appearance.BackColor = Color.Lime
End If
'End If
'Catch ex As Exception
' MessageBox.Show(ex.ToString)
'End Try
End If
End Sub
【讨论】:
以上是关于在 VB.NET 中避免 DBNull?的主要内容,如果未能解决你的问题,请参考以下文章