在我的网页中我有一个gridview,我已经设置了每一行的前和后颜色,如果存在某个元素,如此代码所示
Protected Sub OnRowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim row As TableRow = e.Row
Dim estado As String = (e.Row.Cells(6).Text).ToString
If estado = "" Or estado = "Indefinido" Then
row.BackColor = Color.White
row.ForeColor = Color.Black
ElseIf estado = "Presenças" Then
row.BackColor = Color.LightGreen
row.ForeColor = Color.Black
ElseIf estado = "Falta" Then
row.ForeColor = Color.Red
ElseIf estado = "Suspenso" Then
row.BackColor = Color.LightGray
row.ForeColor = Color.DarkGray
ElseIf estado = "Cancelado" Then
row.BackColor = Color.Red
row.ForeColor = Color.Black
ElseIf estado = "Efectuado" Then
row.BackColor = Color.White
row.ForeColor = Color.Green
End If
End If
End Sub
所以当我尝试更改所选行的背景颜色时,我的问题就开始了,所以我想要的是当我选择一行时,背景颜色变为蓝色而前景颜色为白色,但是已经有背景颜色的行例如是已将其背景颜色设置为红色的estado = "Cancelado"
,选中后,即使边框发生变化,行背颜色也会保持红色。
这是更改所选行颜色边框和前颜色的asp.net代码:
<asp:GridView ID="dgvMarcacoes" runat="server" OnRowDataBound = "OnRowDataBound" style="width:100%" AutoGenerateSelectButton="True">
<SelectedRowStyle ForeColor="White" BorderColor="#6666FF" BorderStyle="Solid" BackColor="#6666FF" />
</asp:GridView>
所以有人知道我怎么能像所选的背景颜色覆盖已经设置的颜色?谢谢
答案 0 :(得分:0)
您正在使用OnRowDataBound,除非您明确调用dgvMarcacoes.DataBind()
或已对基础数据进行了更改,否则将再次调用 。
进行最终格式化的最佳位置是覆盖Render()并在调用基类Render()之前进行任何更改。
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
' Make final changes here
MyBase.Render(writer)
End Sub