惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
J
Java Code Geeks
月光博客
月光博客
博客园_首页
The GitHub Blog
The GitHub Blog
Vercel News
Vercel News
B
Blog RSS Feed
博客园 - 聂微东
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
Jina AI
Jina AI
S
SegmentFault 最新的问题
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
阮一峰的网络日志
阮一峰的网络日志
The Cloudflare Blog
量子位
Martin Fowler
Martin Fowler
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗

博客园 - e动力

asp.net的简单问题 - e动力 - 博客园 c#中如何截取字符串啊 - e动力 - 博客园 后台生成前台htm树(asp.net c) - e动力 - 博客园 在 DataList Web 服务器控件中动态创建模板 允许用户选择 DataList Web 服务器控件中的项 C#版的网站新闻发布系统 软件设计师题型预测 计算机与软件工程知识 软件设计 计算机与软件工程知识 软件设计师考试要求 计算机技术与软件专业技术资格(水平)考试 FSO组件之文件夹操作 通过模板生成静态html页面示例 处理FSO的函数,方便生成HML文件 软件设计师大纲变化 2005年5月软件设计师试题及答案 软件设计师考试大纲(2004版) ASP.NET中读取XML文件
在运行时自定义 DataList 项
e动力 · 2005-08-19 · via 博客园 - e动力

在页处理过程中,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

    ' 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 事件自定义项

  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;
       }