How to: Customize Items Dynamically in the DataList Web Server Control

You can customize items in the DataList control dynamically, which is useful if you want to set item characteristics based on information available at run time. This topic contains two examples that show how to customize the items in a DataList control.

The first code example shows how to customize an individual item when the customization does not involve data. The example displays different types of templates with different background colors.

The second code example shows how to customize the contents of a DataList control item based on the data being displayed in it. The code examines the contents of a data-bound label in the item to extract a date (date of birth). If the date-of-birth month is the same as the current month, the item is highlighted using color.


' 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

Compiling the Code

These examples require:

Robust Programming

The most reliable way to extract the value of a control in a DataList control template is to:

  1. Assign an ID to the control at design time.

  2. Use the FindControl method of the naming container (in this example, a DataListItem object).

The FindControl method returns an object of type Control. You must cast this object to the appropriate control type. If no object is found and you try to extract its value, the control throws an exception of type NullReferenceException.

See Also


How to: Customize DataList Items at Run Time


Web Forms Control Identification