방법: DataList 웹 서버 컨트롤에서 동적으로 항목 사용자 지정

Visual Studio 2010

업데이트: 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 형식의 예외를 throw합니다.

표시: