Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
LoadData()
End If
End Sub
Sub LoadData()
Dim strSQL = "SELECT * FROM tblHotelsA ORDER BY HotelName"
Using conn As New SqlConnection(My.Settings.TEST4)
Using cmdSQL As New SqlCommand(strSQL, conn)
conn.Open()
Dim rst As New DataTable
rst.Load(cmdSQL.ExecuteReader)
GridView1.DataSource = rst
GridView1.DataBind()
End Using
End Using
End Sub
Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Select Case e.Row.Cells(3).Text
Case "Edmonton"
e.Row.Cells(3).BackColor = System.Drawing.Color.SkyBlue
Case "Banff"
e.Row.Cells(3).BackColor = System.Drawing.Color.LightGreen
End Select
End If
End Sub
Dim cActive As CheckBox = e.Row.FindControl("chkActive")
If cActive.Checked Then
Dim lblDes As Label = e.Row.FindControl("lblDescript")
lblDes.Font.Italic = True
e.Row.Cells(4).BackColor = System.Drawing.Color.LightGray
End If
Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim gData As DataRowView = e.Row.DataItem ' Grid data - NOT the GV row!!!!!!
If gData.Item("Active") = True Then
e.Row.Style.Add("Background-color", "LightGray") ' highlight whole row.
End If
End If
End Sub
2条答案
按热度按时间aurhwmvo1#
是的,需要对单个单元格(自动生成的列或绑定列)设置样式,甚至需要对整行设置样式。
让我们完成所有3项
首先,设置“单元格”的样式(这些单元格位于单元格集合、自动生成的列和非模板化列中)。
假设这个简单的网格
(note我是如何包含两个模板化的列,它们都有普通的jane asp.net控件,如标签、文本框等,或者内置的GV列(数据绑定的列,或者自动生成的列)
加载GV的代码如下:
我们现在有了这个:
好了,让我们来做例子1 --给上面的“city”列着色。注意“city”是如何成为一个“绑定字段”的。
因此,自动生成或绑定的字段=单元格集合。
那么,对于像条件格式这样的事情,甚至合并一些列,改变颜色,隐藏显示图像,或者其他什么?
使用GV行数据绑定事件。(这适用于列表视图、重复器等。)
因此,对于city =埃德蒙顿,我们需要一个浅蓝色单元格,而对于city =“Edmonton”,我们需要一些绿色。
因此,我们使用行绑定事件。
此代码:
我们现在有了这个:
不过,上面对于“模板化”栏目的工作方式有点不同。
假设我们想要在check box = true(选中)时突出显示描述。
在这种情况下,我们不能(不)使用cells集合,但是对于模板化控件,我们使用find控件。
就像这样:
注意我们如何在标签控件中将字体设置为斜体。
现在我们看到这个:
注非常接近我们如何使用findcontrol来获得这些模板化控件。
最后但并非最不重要的一点是:
让我们突出显示整行的active,甚至不要让GV中有复选框列(但它在数据库源中)。
因此,假设列的标记如下:
因此,“active”复选框甚至不会显示在GV中(但是,它位于为GV提供数据的数据源中)。
所以,我们可以这样做:
我们现在得到这个:
请记住,“数据项”(整个数据库行)仅在行数据绑定期间可用,一旦数据绑定完成,它将/确实超出范围。
mrfwxfqh2#
因此基本上使用了与albert的回复非常相似的逻辑,我最终手动捕获了最后两行并更改了它们的颜色。