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.
我只需要做一个简单的更改,确保单元格仅在存在有效值时才着色