Ich habe SQL-Tabelle dbo.Clicks die wie folgt aussieht:Jede Gridview-Zelle einzeln füllen und bemalen?
ColNum Color RowNum Message
1 Gold 1 Text1
1 Black 2 Text2
2 Red 2 MoreText
2 Blue 3 TextX
Meine gespeicherte Prozedur gibt diese gleichen Daten wie folgt. Dies wird Basiswert datatable
:
Col1 Col2
-----------------------
Gold (null)
Black Red
(null) Blue
Ich fülle jede Zelle in RowDataBound
:
protected void GridViewClicks_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (TableCell cell in e.Row.Cells)
{
cell.BackColor = ConvertFromHexToColor(cell.Text);
}
}
}
Dieser Code funktioniert, weil es die Zellen mit dem entsprechenden Hintergrundfarbe füllt.
Das Problem ist jetzt, dass ich auch den Inhalt meiner SQL-Tabelle [dbo.Clicks] in jeder Zelle anzeigen muss. Und da stecke ich fest.
Eine Alternative ist, dass jede Datentabelle die Farbe und den Text enthält, etwa so, wenn ich die Beispieldaten verwende. Dann analysiere ich es:
Col1 Col2
Gold/Text1 (null)
Black/Text2 Red/MoreText
(null) Blue/TextX
Aber ich denke, es eine elegantere Art und Weise, dies zu tun sein muß. Für mich ist diese Lösung ziemlich hässlich.
Mein gridview sieht wie folgt aus:
<asp:GridView ID="GridViewClicks" runat="server" ShowHeader="False" onrowdatabound="GridViewClicks_RowDataBound">
</asp:GridView>
Dank.
Danke für die Antwort. Ich habe bemerkt, dass du einen festen Wert für die 'Zellen' festlegst. Ich weiß nicht, wie viele Spalten die Datentabelle haben wird. Würde deine Antwort noch funktionieren? – rbhat
Das hängt eher davon ab, wie die Spalte und ihre Farben von der Datenquelle empfangen werden. Wenn es "Text, Farbe, Text, Farbe" usw. ist, können Sie eine Schleife im rowdatabound-Ereignis erstellen, das jede Zelle -1 "färbt". – VDWWD
Ich habe meine Antwort mit einem einfachen Beispiel aktualisiert. – VDWWD