Avatar billede mach3 Nybegynder
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
Avatar billede snepnet Nybegynder
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 ?
Avatar billede repsak Nybegynder
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
}
Avatar billede snepnet Nybegynder
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>
Avatar billede mach3 Nybegynder
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>
Avatar billede snepnet Nybegynder
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>
Avatar billede snepnet Nybegynder
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>
Avatar billede mach3 Nybegynder
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
Avatar billede snepnet Nybegynder
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)
Avatar billede snepnet Nybegynder
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")) %>'
Avatar billede mach3 Nybegynder
14. august 2004 - 15:41 #10
Ok tak for det - er ikke lige ved min egen computer så jeg prøver det i morgen :-)
Avatar billede snepnet Nybegynder
14. august 2004 - 17:07 #11
Helt fint - du skriver bare hvis det ikke ruller :o)
Mvh
Avatar billede mach3 Nybegynder
15. august 2004 - 17:21 #12
Hej snepnet! Du er bare kanon, det virkede. Kom med et svar og du skal få dine point :-)
Avatar billede snepnet Nybegynder
15. august 2004 - 17:45 #13
Super :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester