13. august 2004 - 15:07
Der er
12 kommentarer og 1 løsning
Datagrid indhold: farver?
Hej, Jeg har noget kode med et datagrid som er meget simpelt. Den indeholder to kolonner: dato samt status hvor status indeholder "fejl" eller "ok". Data kommer fra en access database og viser resultatet af en test som bliver kørt med jævne mellemrum. Jeg ønsker, at når en test melder "fejl" så skal det vises med rød skrift i datagrid'et. Tilsvarende, hvis en test melder "ok" skal det vises med grøn skrift. Er der nogen der har en ide om hvordan det kan gøres? Mvh
Annonceindlæg fra Thales
13. august 2004 - 16:24
#1
Det er ikke så vanskeligt... hvis du poster det kode der laver dit datagrid skal jeg nok flette det ind. er dine "statusser" hhv. "fejl" og "ok" i klar tekst ?
13. august 2004 - 17:10
#2
...men grundskitsen er: (pseudo) OnDataBind{ if(den aktuelle celles tekst er "fejl") sæt farven på item = Color.Red else (if)(den aktuelle celles tekst er "ok") sæt farven på item = Color.Green }
13. august 2004 - 17:59
#3
Hmm.... det er i hvert fald en mulighed - du kan også angive det i din template f.eks. sådan her : <asp:DataGrid id="dg" runat="server" AutoGenerateColumns="False"> <Columns> <asp:TemplateColumn HeaderText="SomeString"> <ItemTemplate> <asp:Label id="lbl1" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Status") %>' ForeColor='<%# DataBinder.Eval(Container, "DataItem.FldString") == "fejl" ? System.Drawing.Color.Red : System.Drawing.Color.Black %>'> </asp:Label> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid>
14. august 2004 - 01:40
#4
<asp:DataGrid id="DataGrid1" runat="server" autogeneratecolumns="false" HeaderStyle-BackColor="LightSteelBlue" AllowPaging="True" PageSize="10" PagerStyle-Mode="NumericPages" PagerStyle-HorizontalAlign="Right" PagerStyle-NextPageText="Next" PagerStyle-PrevPageText="Prev" OnPageIndexChanged="DataGrid1_PageIndexChanged" BorderColor="black" BorderWidth="1" GridLines="Both" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" AlternatingItemStyle-BackColor="#eeeeee"> <columns> <asp:boundcolumn headertext="date&time" datafield="dateTime"/> <asp:boundcolumn headertext="status" datafield="ATG" /> </columns> </asp:DataGrid>
14. august 2004 - 04:12
#5
Det du har stående her : <columns> <asp:boundcolumn headertext="date&time" datafield="dateTime"/> <asp:boundcolumn headertext="status" datafield="ATG" /> </columns> Kan du bare skifte ud med det her (hvis det altså er sådan at du får "fejl" ud ved fejl :o): <Columns> <asp:TemplateColumn HeaderText="datotid"> <ItemTemplate> <asp:Label id="lblDateTime" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.dateTime") %>' ForeColor='<%# DataBinder.Eval(Container, "DataItem.ATG") == "fejl" ? System.Drawing.Color.Red : System.Drawing.Color.Black %>'> </asp:Label> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="status"> <ItemTemplate> <asp:Label id="lblATG" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ATG") %>' ForeColor='<%# DataBinder.Eval(Container, "DataItem.ATG") == "fejl" ? System.Drawing.Color.Red : System.Drawing.Color.Black %>'> </asp:Label> </ItemTemplate> </asp:TemplateColumn> </Columns>
14. august 2004 - 04:14
#6
Hov for ... lidt for hurtig copy/paste der :o) <Columns> <asp:TemplateColumn HeaderText="datotid"> <ItemTemplate> <asp:Label id="lblDateTime" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.dateTime") %>' ForeColor='<%# DataBinder.Eval(Container, "DataItem.ATG") == "fejl" ? System.Drawing.Color.Red : System.Drawing.Color.Black %>'> </asp:Label> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="status"> <asp:Label id="lblATG" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ATG") %>' ForeColor='<%# DataBinder.Eval(Container, "DataItem.ATG") == "fejl" ? System.Drawing.Color.Red : System.Drawing.Color.Black %>'> </asp:Label> </ItemTemplate> </asp:TemplateColumn> </Columns>
14. august 2004 - 10:58
#7
Hej igen. Den melder fejl når man kører siden: "Expression exptected" Det skal lige siges at det er vb.net jeg koder i hvis det betyder noget :-) Mvh
14. august 2004 - 11:59
#8
Det er sikkert bare syntaks.... det virker fint her, og hvis du normalt skriver i VB, har du nok bedre forudsætninger for at oversætte end jeg har ;o)
14. august 2004 - 12:28
#9
Jeg ved ikke hvordan man laver en ? : operator i VB (hvis man kan), men du kan lave dig en lille funktion til det istedet : Protected Function GetColor(ByVal status As String) As Color If (status = "fejl") Then Return Color.Red Else Return Color.Black End If End Function og så sætter du ForeColor til følgende udtryk istedet : ForeColor='<%# GetColor(DataBinder.Eval(Container, "DataItem.FldString")) %>'
14. august 2004 - 15:41
#10
Ok tak for det - er ikke lige ved min egen computer så jeg prøver det i morgen :-)
14. august 2004 - 17:07
#11
Helt fint - du skriver bare hvis det ikke ruller :o) Mvh
15. august 2004 - 17:21
#12
Hej snepnet! Du er bare kanon, det virkede. Kom med et svar og du skal få dine point :-)
15. august 2004 - 17:45
#13
Super :o)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.