我有一个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
功能会再次正常(尽管没有突出显示)。
答案 0 :(得分:0)
事实证明,代码实际上是正确的。我在代码周围放了一个Try
块,在Catch
部分有一个部分,用于记录我数据库中表格的详细信息。
直接显示以下内容来自Select Case
Conversion from string " " to type 'Integer' is not valid.
一个简单的更改,以确保在存在有效值时仅对单元格进行着色是我所需要的。