使用 ItemDataBound 、 ItemCreated 事件
Datagrid 控件对每个数据行引发两个事件。首次将每行添加到 Datagrid 时将引发 ItemCreated 事件,将数据绑定到每行时将引发 ItemDataBound 事件。添加单元格到 Datagrid 的表格输出时,这些事件可以用于控制每个单元格的外观或内容。例如,可以基于数值的范围修改单元格的背景颜色。但关键是要记住,这些事件的引发针对的是所有 Datagrid 项目类型,包括页眉、页脚和分页程序项目。如果执行 ItemDataBound 事件期间,没有在引用项目的数据之前仔细检查项目类型,第一个项目(通常是标题行)就将发生错误。如果 Datagrid 启用了分页,且将其设置为在顶端显示,那么第一个项目就会成为分页程序项目。以下示例代码显示如何在引用项目数据之前进行正确的 ListItemType 检查。不要忘了 AlternatingItem!
Sub DataGrid1_ItemDataBound(source As Object, _ e As DataGridItemEventArgs) If (e.Item.ItemType = ListItemType.Item Or _ e.Item.ItemType = ListItemType.AlternatingItem) Then If e.Item.DataItem("ForumDate") < DateTime.Today Then e.Item.Cells(1).BackColor = System.Drawing.Color.FromName("#ffccff") End If End If End Sub
Private Sub gridAuthors_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles gridAuthors.ItemDataBound
If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
e.Item.Attributes.Add("onmouseover", "this.style.backgroundColor='DodgerBlue'")
e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='white'")
End If
End Sub