随笔 - 63  文章 - 72  评论 - 951  阅读 - 140万 

[http://msdn.microsoft.com/zh-cn/library/cc438028(VS.71).aspx]

在页处理过程中,DataList 控件创建呈现到该页的单个项。为允许在创建项时自定义它们,DataList 控件引发两个事件:

  • 仅为项、交替项和选定项引发 ItemDataBound 事件。如果根据数据进行自定义,则请使用此事件。
  • 为所有项引发 ItemCreated 事件,包括标头和脚注。即使没有为这些项创建模板,也为它们引发该事件,以防以后要动态创建这些模板。有关动态创建模板的信息,请参见在 DataList Web 服务器控件中动态创建模板

通过响应这些事件,可更改项。典型的用法是根据其中显示的数据更改项的外观。例如,如果从数据库读取的数值为负,则可以将该项的背景色设置为红色。

在运行时使用 ItemCreated 事件自定义项

  1. DataList 控件的 ItemCreated 事件创建一个事件处理程序。有关详细信息,请参见在 Web 窗体页中创建事件处理程序
  2. 在该事件处理程序中,使用来自 e 事件参数对象的 Item 对象获取当前项。通过 Item 对象的 ItemIndex 属性可获得当前项的索引,通过 Item 对象的 ItemType 属性(该属性是使用 ListItemType 枚举定义的)可以获得其类型。
    注意   ItemIndex 属性仅对 ItemAlternatingItemSelectedItem 对象返回正值。标头、脚注和分隔符项的索引值为 -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 事件自定义项

  1. DataList 控件的 ItemDataBound 事件创建一个事件处理程序。有关详细信息,请参见在 Web 窗体页中创建事件处理程序
  2. 在该事件处理程序中,使用 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;
        }
        }
posted on   stg609  阅读(227)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 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的设计模式综述
分享按钮
点击右上角即可分享
微信分享提示