如何:在 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

编译代码

这些示例要求:

可靠编程

DataList 控件模板中提取控件值的最可靠方法为:

  1. 在设计时将一个 ID 分配给该控件。

  2. 使用命名容器(本例中的 DataListItem 对象)的 FindControl 方法。

FindControl 方法返回 Control 类型的对象。必须将该对象强制转换为相应的控件类型。如果找不到任何对象,但尝试提取其值,该控件会引发类型为 NullReferenceException 的异常。

请参见

任务

如何:在运行时自定义 DataList 项

概念

Web 窗体控件标识