方法 : DataList Web サーバー コントロールの項目を動的にカスタマイズする
更新 : 2007 年 11 月
DataList コントロールの項目は動的にカスタマイズできるので、実行時に使用できる情報に基づいて項目の特性を設定する場合に便利です。このトピックには、DataList コントロールの項目をカスタマイズする方法を示す 2 つの例があります。
最初のコード例では、データのカスタマイズを伴わないときの各項目をカスタマイズする方法を示します。この例では、各種テンプレートを異なる背景色で表示します。
2 番目のコード例では、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
コードのコンパイル方法
これらの例では、次の項目が必要です。
Northwind データベースの Employees テーブルにバインドされる DataList1 という名前の DataList コントロール。DataList コントロールのデータ ソースへのバインドについては、「方法 : DataList Web サーバー コントロールを ASP.NET Web ページに追加する」を参照してください。
少なくとも 1 つの Label1 という Label コントロールを含む項目テンプレート。このラベルは Employees テーブルの BirthDate フィールドに連結する必要があります。コントロールのフィールドへのバインドについては、「データ バインド式の概要」を参照してください。
堅牢性の高いプログラム
DataList コントロール テンプレートのコントロールから値を抽出するための最も信頼性の高い方法は次のとおりです。
デザイン時にコントロールに対して ID を割り当てます。
名前付けコンテナの FindControl メソッドを使用します (この例では DataListItem オブジェクト)。
FindControl メソッドは、Control 型のオブジェクトを返します。このオブジェクトを適切なコントロールの型にキャストする必要があります。存在しないオブジェクトの値を抽出しようとした場合、コントロールは NullReferenceException 型の例外をスローします。