Comment puis-je accéder à un contrôle dans le HeaderTemplate de mon GridView

Je veux avoir un DropDownList dans l'en-tête de mon GridView. Dans Mon code je n'arrive pas à y accéder. Voici la HeaderTemplate:

<asp:TemplateField SortExpression="EXCEPTION_TYPE">
    <HeaderTemplate>
        <asp:Label ID="TypeId" runat="server" Text="Type" ></asp:Label>
        <asp:DropDownList ID="TypeFilter" runat="server" AutoPostBack="true">
        </asp:DropDownList>
    </HeaderTemplate>
    ...
</asp:TemplateField>

Et voici la section dans le code de derrière, où je suis en train d'essayer d'accéder à la commande 'TypeFilter'.

protected void ObjectDataSource1_Selected(object sender, 
                                          ObjectDataSourceStatusEventArgs e)
{
    DataTable dt = (DataTable)e.ReturnValue;
    int NumberOfRows = dt.Rows.Count;
    TotalCount.Text = NumberOfRows.ToString();
    DataView dv = new DataView(dt);
    DataTable types = dv.ToTable(true, new string[] { "EXCEPTION_TYPE" });
    DropDownList typeFilter = (DropDownList)GridView1.FindControl("TypeFilter");
    typeFilter.DataSource = types;
    typeFilter.DataBind();

}

Vous remarquerez que je suis en train d'utiliser FindControl pour obtenir une référence pour le Contrôle DropDownList. Cet appel renvoie la valeur null au lieu de retourner le contrôle. Comment puis-je accéder à la commande?

OriginalL'auteur minty | 2009-03-05