根据单元格值设置ASP DataGrid行颜色

时间:2013-04-15 17:52:22

标签: asp.net html vb.net datagrid

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

ASP:DataGrid可以跨多个页面,每页限制为20条记录。

其中一列是要处理的条目剩余天数的值。我想突出显示任何值为0 - 1为红色,任何2 - 5为oracle的值。我尝试过的方法是设置函数调用OnItemDataBound

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功能会再次正常(尽管没有突出显示)。

1 个答案:

答案 0 :(得分:0)

事实证明,代码实际上是正确的。我在代码周围放了一个Try块,在Catch部分有一个部分,用于记录我数据库中表格的详细信息。

直接显示以下内容来自Select Case

Conversion from string " " to type 'Integer' is not valid.

一个简单的更改,以确保在存在有效值时仅对单元格进行着色是我所需要的。