webForumDet fria alternativet

Gridview - olika färger på rader

.NET

10 svar · 682 visningar · startad av Sjodahl

Medlem sedan maj 20033 218 inlägg
Frågan#1

Hej!

Lyckas inte riktigt få till så att man kan få olika färger på en Gridview.
tex om ett datum är under 2008 så skall hela fältet vara rött.

Gridview.jpg
Medlem sedan sep. 2004828 inlägg
#2

Hej!

Det får du lösa i ItemDatabound, och kolla värdet, och sätta CSS på elementet.
Återkom gärna om du får problem.

Medlem sedan maj 20033 218 inlägg
#3

På min GridView har jag satt följande:

ondatabound="GridView1_DataBound
protected void GridView1_DataBound(object sender, EventArgs e)
{
  här jag skall ta hand om det?
}
Medlem sedan sep. 2004828 inlägg
#4

Exakt där ska du ta hand om det.
e.Item.DataItem innehåller ett objekt av den typen som du databundit mot. Rätt typkastat så kan du använda det där.

Medlem sedan maj 20033 218 inlägg
#5

Lyckas inte riktigt komma åt e.Item.

(Gridview)e.??
Medlem sedan sep. 2004828 inlägg
#6

Nej, inte GridView. Kanske en DataRow eller nåt, beror på vad det är för datatyp du databinder till.

DataRow r = (DataRow)e.Item.DataItem;

Medlem sedan maj 20033 218 inlägg
#7
DataRow r = (DataRow)e.Item.DataItem

System.EventArgs' does not contain a definition for 'Item' and no extension method 'Item' accepting a first argument of type 'System.EventArgs'

Det är en gridview jag binder datan till.
Data typen är lite varierande mellan Int,string,datetime.

(om jag inte missförstår dig).

Medlem sedan sep. 2004828 inlägg
#8

Du missförstår mig. Du har en datakälla, som du databinder till din GridView.
Det är bara EN datatyp (men det kan vara en komplex sådan).

Kanske finns inte e.Item.DataItem i en GridView, men i Repeaters finns den iallafall. Jag använder inte GridView.

Medlem sedan maj 20033 218 inlägg
#9

Där satt den:

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                int quantity = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "quantity"));
                string FBK = DataBinder.Eval(e.Row.DataItem, "FBK").ToString();
                string M4 = DataBinder.Eval(e.Row.DataItem, "M4").ToString();
                if (FBK == "" || M4 == "")
                {
                    e.Row.BackColor = System.Drawing.Color.DarkRed;
                    e.Row.ForeColor = System.Drawing.Color.White;
                }
                    
            }
        }
Medlem sedan maj 20033 218 inlägg
#10

Tack för hjälpen.

Medlem sedan sep. 2004828 inlägg
#11

Så lite så... Det skiljer alltså lite mellan GridView och Repeater.

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)