[http://msdn.microsoft.com/zh-cn/library/cc438028(VS.71).aspx]
在页处理过程中,DataList 控件创建呈现到该页的单个项。为允许在创建项时自定义它们,DataList 控件引发两个事件:
- 仅为项、交替项和选定项引发 ItemDataBound 事件。如果根据数据进行自定义,则请使用此事件。
- 为所有项引发 ItemCreated 事件,包括标头和脚注。即使没有为这些项创建模板,也为它们引发该事件,以防以后要动态创建这些模板。有关动态创建模板的信息,请参见在 DataList Web 服务器控件中动态创建模板。
通过响应这些事件,可更改项。典型的用法是根据其中显示的数据更改项的外观。例如,如果从数据库读取的数值为负,则可以将该项的背景色设置为红色。
在运行时使用 ItemCreated 事件自定义项
- 为 DataList 控件的 ItemCreated 事件创建一个事件处理程序。有关详细信息,请参见在 Web 窗体页中创建事件处理程序。
- 在该事件处理程序中,使用来自 e 事件参数对象的 Item 对象获取当前项。通过 Item 对象的 ItemIndex 属性可获得当前项的索引,通过 Item 对象的 ItemType 属性(该属性是使用 ListItemType 枚举定义的)可以获得其类型。
注意 ItemIndex 属性仅对 Item、AlternatingItem 和 SelectedItem 对象返回正值。标头、脚注和分隔符项的索引值为 -1。
下面的示例显示可如何有条件地修改项的背景色。该示例使用 ItemType 属性和 ListItemType 枚举设置项的背景色。将项设置为 LightGoldenrodYellow;将交替项设置为 DarkGoldenRod;将选定项设置为 Yellow。
// 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 事件自定义项
- 为 DataList 控件的 ItemDataBound 事件创建一个事件处理程序。有关详细信息,请参见在 Web 窗体页中创建事件处理程序。
- 在该事件处理程序中,使用 e.Item.DataItem 属性测试将绑定到控件的数据,并基于该数据进行比较。
下面的示例显示可如何基于数据进行条件测试。该示例从 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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述