How do I access a control in the HeaderTemplate of my GridView
25,866
Solution 1
With Repeaters, you access headerTemplate items by using FindControl in the OnItemDataBoundEvent like this:
RepeaterItem item = (RepeaterItem)e.Item;
if (item.ItemType == ListItemType.Header) {
item.FindControl("control"); //goes here
}
Does this work for GridViews as well?
Solution 2
private void GetDropDownListControl()
{
DropDownList TypeFilter = ((DropDownList)this.yorGridView.HeaderRow.FindControl("TypeFilter"));
}
Solution 3
protected void ObjectDataSource1__RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
DropDownList typeFilter = (DropDownList)GridView1.FindControl("TypeFilter");
}
}
Solution 4
Try this to find a control in the HeaderTemplate without a row-data-bind, if that's what is needed:
private void Lab_1_GV1_Populate_SearchText()
{
GridView GV1 = (GridView)FindControl("Lab_1_GV1");
TextBox TXB1 = (TextBox)GV1.HeaderRow.FindControl("Lab_1_TX2GV1");
}
Thanks
Ruchir
Author by
minty
Updated on July 16, 2022Comments
-
minty almost 2 years
I want to have a DropDownList in the header of my GridView. In My codebehind I can't seem to access it. Here is the 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>
And here is the section in the code behind where I am trying to access the control '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(); }
You will notice that I am trying to use FindControl to get a reference to the DropDownList Control. This call returns null instead of returning the control. How do I get access to the control?