如何:在 DataList Web 服务器控件中动态自定义项
更新:2007 年 11 月
可以在 DataList 控件中动态自定义项。如果要根据运行时可用的信息设置项的特征,这样做是很有用的。本主题包含的两个示例介绍了如何在 DataList 控件中自定义各项。
第一个代码示例演示如何在自定义没有涉及数据时自定义单个项。该示例显示具有不同背景色的不同类型的模板。
第二个代码示例演示如何根据 DataList 控件项中显示的数据自定义该控件的内容。该代码检查该项中数据绑定标签的内容,以提取一个日期(出生日期)。如果出生日期的月份与当前月份相同,将使用颜色突出显示该项。
示例
' Example 1
Private Sub DataList1_ItemCreated(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) _
Handles DataList1.ItemCreated
Select Case e.Item.ItemType
Case ListItemType.Item
e.Item.BackColor = Color.LightGoldenrodYellow
Case ListItemType.AlternatingItem
e.Item.BackColor = Color.DarkGoldenrod
Case ListItemType.SelectedItem
e.Item.BackColor = Color.Yellow
Case Else
' Add code here to handle the header, footer, and
' separator templates.
End Select
End Sub
' Example 2
Private Sub DataList1_ItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) _
Handles DataList1.ItemDataBound
Dim dob As DateTime
Dim doblabel As Label
doblabel = CType(e.Item.FindControl("Label1"), Label)
dob = CType(doblabel.Text, DateTime)
If dob.Month = Today.Month Then
e.Item.BackColor = Color.Yellow
End If
End Sub
编译代码
这些示例要求:
名为 DataList1 的 DataList 控件,该控件绑定到 Northwind 数据库的 Employees 表。有关将 DataList 控件绑定到数据源的信息,请参见如何:将 DataList Web 服务器控件添加到 ASP.NET 网页。
项模板,该模板至少包含一个名为 Label1 的 Label 控件。此标签应绑定到 Employees 表的 BirthDate 字段。有关将控件绑定到字段的信息,请参见数据绑定表达式概述。
可靠编程
在 DataList 控件模板中提取控件值的最可靠方法为:
在设计时将一个 ID 分配给该控件。
使用命名容器(本例中的 DataListItem 对象)的 FindControl 方法。
FindControl 方法返回 Control 类型的对象。必须将该对象强制转换为相应的控件类型。如果找不到任何对象,但尝试提取其值,该控件会引发类型为 NullReferenceException 的异常。