大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
实例:现要把如下的数据集(在查询管理器的查出来的结果集)绑定到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#的代码。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182317.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...