











在页处理过程中,DataList 控件创建呈现到该页的单个项。为允许在创建项时自定义它们,DataList 控件引发两个事件:
通过响应这些事件,可更改项。典型的用法是根据其中显示的数据更改项的外观。例如,如果从数据库读取的数值为负,则可以将该项的背景色设置为红色。
在运行时使用 ItemCreated 事件自定义项
注意 ItemIndex 属性仅对 Item、AlternatingItem 和 SelectedItem 对象返回正值。标头、脚注和分隔符项的索引值为 -1。
下面的示例显示可如何有条件地修改项的背景色。该示例使用 ItemType 属性和 ListItemType 枚举设置项的背景色。将项设置为 LightGoldenrodYellow;将交替项设置为 DarkGoldenRod;将选定项设置为 Yellow。
' Visual Basic
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 hand the header, footer, and
' separator templates.
End Select
End Sub
// C#
private void DataList1_ItemCreated(object sender,
System.Web.UI.WebControls.DataListItemEventArgs e)
{
switch (e.Item.ItemType)
{
case System.Web.UI.WebControls.ListItemType.Item :
e.Item.BackColor = Color.LightGoldenrodYellow;
break;
case System.Web.UI.WebControls.ListItemType.AlternatingItem :
e.Item.BackColor = Color.DarkGoldenrod;
break;
case System.Web.UI.WebControls.ListItemType.SelectedItem :
e.Item.BackColor = Color.Yellow;
break;
default :
// Add code here to handle the header, footer, and
// separator templates.
break;
}
}此时引发 ItemCreated 事件,模板中的各个控件尚未绑定到数据。但是,这些数据可用于 ItemDataBound 事件中。
在运行时使用 ItemDataBound 事件自定义项
下面的示例显示可如何基于数据进行条件测试。该示例从 DataItem 提取第三个字段:Quantity 字段。如果该数量小于 10,则将 DataList 控件中的该项涂以红色。
' Visual Basic
Private Sub DataList1_ItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) _
Handles DataList1.ItemDataBound
Dim drv As DataRowView = CType(e.Item.DataItem, DataRowView)
Dim quantity As Integer = _
Integer.Parse(drv.Row("Quantity").ToString())
If (quantity < 10) Then
e.Item.BackColor = Color.Red
End If
End Sub
// C#
private void DataList1_ItemDataBound(object sender,
System.Web.UI.WebControls.DataListItemEventArgs e)
{
DataRowView drv = (DataRowView)(e.Item.DataItem);
int quantity = int.Parse(drv.Row["Quantity"].ToString());
if (quantity < 10)
{
e.Item.BackColor = Color.Red;
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。