DataGrid的ItemDataBound用法实例

鉴于在本版收到好多asp.net初学者因为不了解ItemDataBound事件的用法而提出问题,特写此实例教程,以飨众友。

实例:现要把如下的数据集(在查询管理器的查出来的结果集)绑定到DataGrid:


绑定结果为——



然而现在要实现如下效果:
一、第一列的产品名是一个链接,它要求链接目标为:
prod.aspx?name={产品名称}&spec={产品规格}
二、当产品单价>=1元时,将其单价显示为红色;
三、当产品单价为0时,将其整行的背景显示为黄色;

结果如下图:


回想我们以前用ASP编程的时候,对于要生成数据页面的做法,我们是事必亲躬地为生成的每一行表格编写HTML代码,可是我遇到好多初学.net的人抱怨,.net中的Datagrid使数据页面的生成变得非常方便,但是对于特殊要求却无能为力。

其实并非如此,对于asp中能实现的效果,asp.net中照样能够非常方便地实现,针对上述要求,只需为DataGrid的ItemDataBound事件编写代码即可。

DataGrid每生成一行,都会执行ItemDataBound事件一次,从上图中看到,这个DataGrid共有12行(包括10数据行,一个页眉行,和一个分页行)。则这里ItemDataBound事件将会被执行12次。而事件中的e参数的e.Item.ItemType则可用于判断当前正在绑定的行是什么行,它是一个枚举,见下图:


(注:在DataGrid的属性生成器中,第一列为超级链接列,而且不必填写“Url字段”和“Url格式字符串”两个属性值)
当然,我们无需理会生成页眉和分页行的情况,但当绑定数据集的行时,该行有可能是普通数据行、替换行、选定行、处于编辑状态的行。

参数e的e.item指向当前正在绑定的行
而e.item.cells集合指向当前正在绑定的行的每一个单元格。

由此,我们已给能够为上述要求编写代码了——

Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
Select Case e.Item.ItemType
Case ListItemType.AlternatingItem, ListItemType.EditItem, ListItemType.Item, ListItemType.SelectedItem
Dim drv As DataRowView = e.Item.DataItem
Dim hlk As HyperLink = e.Item.Cells(0).Controls(0)
hlk.NavigateUrl = "prod.aspx?name=" & drv("prod_name") & "&spec=" & drv("prod_spec")

If drv("price") >= 1 Then
e.Item.Cells(2).ForeColor = Color.Red
End If
If drv("price") = 0 Then
e.Item.BackColor = Color.Yellow
End If

End Select
End Sub

由于程序简单,所以这里不再提供C#的代码。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值