gridview选择了行背景色

时间:2017-03-20 16:26:18

标签: asp.net vb.net gridview

在我的网页中我有一个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>

所以有人知道我怎么能像所选的背景颜色覆盖已经设置的颜色?谢谢

1 个答案:

答案 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