Komponenta GridView nabízí ideální způsob, jak rychle a bez práce prezentovat množinu dat. Možnosti formátování jsou opravdu široké, avšak vztahují se na celou komponentu, či její části. Pokud chceme upravit vzhled jednotlivých řádků ( a to v závislosti na jejich obsahu ), musíme sáhnout po události RowDataBound. Ta je vyvolána při zpracování každého záznamu v datovém zdroji.

V příkladu bude záznamy zobrazované v GridView reprezentovat třída Zaznam

C#:
public class Zaznam
{
    public string text {get; set; }
    public int cislo { get; set; }
    public bool bit { get; set; }

    public Zaznam(string text, int cislo, bool bit)
    {
        this.text = text;
        this.cislo = cislo;
        this.bit = bit;
    }
}

Vytvořím nový GridView,  nastavím mu datový zdroj s několika záznamy a postarám se o vykreslení do stránky

C#:
List<Zaznam> data = new List<Zaznam>();
    data.Add(new Zaznam("První", 4, true));
    data.Add(new Zaznam("Druhý", 3, true));
    data.Add(new Zaznam("Třetí", 8, false));
    data.Add(new Zaznam("Čtvrtý", 2, false));
    data.Add(new Zaznam("Pátý", 5, true));

GridView gv = new GridView();
    gv.DataSource = data;
    gv.DataBind();
form1.Controls.Add(gv);

Pokud bych teď chtěl změnou pozadí řádku zvýraznit všechny takové, které mají nastaveno číslo větší než 3, využiji události RowDataBound. Při jejím vyvolání se provede metoda GridView_RowDataBound a ta se postará o zvýraznění řádku, jehož zpracování událost vyvolalo.

C#:
gv.DataSource = data;
gv.RowDataBound += GridView_RowDataBound;
gv.DataBind();

C#:
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (((Zaznam)e.Row.DataItem).cislo> 3)
        {
            e.Row.BackColor = System.Drawing.Color.YellowGreen;
        }
    }
}

Vzhledem k tomu, že chceme zvýrazňovat pouze řádky s daty (ne třeba stránkování, hlavičku, prázdné řádky, ..), je třeba ověřit typ řádku, který vyvolal událost.

Nejsnadnější způsob, jak přistupovat k datům v řádku je přetypování objektu DataItem na objekt, který reprezentuje záznam v GridView. V tomto případě tedy Zaznam. Tím dostaneme přístup ke všem vlastnostem daného objektu a stačí vytvořit vhodnou podmínku. Nakonec stačí nastavit způsob zvýraznění.

Druhá možnost, jak přistoupit k datům, vede přes jednotlivé buňky řádku. Ty jsou počítány od nuly a stejného výsledku by tak šlo dosáhnout podmínkou:

C#:
if (int.Parse(e.Row.Cells[1].Text)> 3)

Určitě jste si všimli, že ve sloupci bit, je pro reprezentaci hodnot true / false použit klasický CheckBox. Není problém řádky, kdy není CheckBox zaškrtnutý, vypsat tučně. Stačí metodu GridView_RowDataBound doplnit o další podmínku, kde objekt v dané buňce přetypujeme na CheckBox a zjistíme stav vlastnosti Checked.

C#:
if (!((CheckBox)e.Row.Cells[2].Controls[0]).Checked)
{
    e.Row.Font.Bold = true;
}

GridView bez úpravGridView se zvýrazněním řádků

Takto lze přistupovat k nejrůznějším datům v GridView a na jejich základě upravovat vzhled daného řádku. Případně provádět jakékoliv úkony závislé na vypsaných datech.