2017-03-20 2 views
0

in meiner Webseite Ich habe ein Gridview und im bereits jede Zeile des Vordergrunds Einstellung und Hintergrundfarbe, wenn ein bestimmtes Element vorhanden ist, wie in diesem Codegridview ausgewählte Zeile Backcolor

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 

so mein Problem beginnt, angezeigt, wenn im zu ändern versuchen, die ausgewählte Zeile backcolor, also was ich wollte war wie wenn ich eine Zeile auswählen die Backcolor wird blau und die Forecolor weiß, aber die Zeilen, die bereits eine Hintergrundfarbe zum Beispiel die estado = "Cancelado", die bereits die Farbe zurück auf rot, wenn gesetzt hat ausgewählt, bleibt die Farbe der Zeilenrückseite rot, obwohl sich der Rand ändert. hier ist die asp.net Code, der die ausgewählte Zeile Farbgrenze und Vordergrundfarbe ändert:

<asp:GridView ID="dgvMarcacoes" runat="server" OnRowDataBound = "OnRowDataBound" style="width:100%" AutoGenerateSelectButton="True"> 
     <SelectedRowStyle ForeColor="White" BorderColor="#6666FF" BorderStyle="Solid" BackColor="#6666FF" /> 
    </asp:GridView> 

So hat jemand weiß, wie ich, wie die ausgewählte Hintergrundfarbe überschreiben, die bereits eingestellten Farbe machen kann dank

Antwort

0

Sie? verwenden OnRowDataBound, die darf nicht wieder aufgerufen werden, es sei denn, Sie rufen explizit dgvMarcacoes.DataBind() oder haben eine Änderung an den zugrunde liegenden Daten vorgenommen.

Der beste Ort für die endgültige Formatierung ist das Überschreiben von Render() und das Vornehmen von Änderungen vor dem Aufruf der Basisklasse Render().

Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) 

    ' Make final changes here 

    MyBase.Render(writer) 
End Sub 
+0

danke, habe nicht daran gedacht: P –