Asp.net 基于单元格值设置ASP DataGrid行颜色

Asp.net 基于单元格值设置ASP DataGrid行颜色,asp.net,html,vb.net,datagrid,Asp.net,Html,Vb.net,Datagrid,我有一个ASP:DataGrid,我正在其中显示记录。记录从SQL Server 2008 R2数据库拉入SqlAdapter,用于填充数据集,该数据集绑定到ASP:DataGrid Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound If

我有一个
ASP:DataGrid
,我正在其中显示记录。记录从SQL Server 2008 R2数据库拉入
SqlAdapter
,用于填充
数据集,该数据集绑定到
ASP:DataGrid

Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
    If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
        Select Case CType(e.Item.Cells(5).Text, Integer)
            Case 0 To 1
                e.Item.BackColor = Drawing.Color.Red
            Case 2 To 5
                e.Item.BackColor = Drawing.Color.Orange
        End Select
    End If
End Sub
ASP:DataGrid
可以跨越多个页面,并且每页限制为20条记录

其中一列是要处理的条目剩余天数的值。我想突出显示值为0-1的任何一个为红色,值为2-5的任何一个为oracle。我尝试过的方法是对
ASP:DataGrid

Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
    If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
        Select Case CType(e.Item.Cells(5).Text, Integer)
            Case 0 To 1
                e.Item.BackColor = Drawing.Color.Red
            Case 2 To 5
                e.Item.BackColor = Drawing.Color.Orange
        End Select
    End If
End Sub

当页面第一次加载时,这一点非常有效。如果有多页记录,并且您尝试移动到下一页,则根本不会加载任何记录,事实上,
ASP:DataGrid
根本不会显示。如果我删除
OnItemDataBound
,那么
ASP:DataGrid
会再次正常工作(尽管没有突出显示)。

因此,事实证明may代码实际上是正确的。我在代码周围放置了一个
Try
块,并在
Catch
部分中添加了一个部分,以将详细信息记录到数据库的一个表中

它立即显示了来自
Select案例的以下内容

Conversion from string " " to type 'Integer' is not valid.
我只需要做一个简单的更改,确保单元格仅在存在有效值时才着色