Reputation: 24789
I have a listview. In my listview I have a dropdownbox which I want to fill in my codebehind page. Only the thing is, I don't know how to access this webcontrol. The following doesn't work:
DropDownList ddl = (DropDownList)lvUserOverview.Controls[0];
I know the index is 0 because the dropdownlist is the only control on the listview (also when I try index 1 I get a index out of range exception).
Can someone tell me how i can access the dropdownlist? In my pagebehind I want to add listitems.
ASPX Code :
<asp:DropDownList ID="ddlRole" onload="ddlRole_Load" runat="server">
</asp:DropDownList>
Codebehind:
protected void ddlRole_Load(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)lvUserOverview.FindControl("ddlRole");
if (ddl != null)
{
foreach (Role role in roles)
ddl.Items.Add(new ListItem(role.Description, role.Id.ToString()));
}
}
Upvotes: 2
Views: 2647
Reputation: 3637
To get a handle to the drop down list inside of its own Load event handler, all you need to do is cast sender as a DropDownList.
DropDownList ddlRole = sender as DropDownList;
Upvotes: 1
Reputation: 1994
If your controls are data bound, make sure you try to access their descendents after data binding. I may also help just inspecting objects in debugger before that line.
Upvotes: 0
Reputation: 43084
If this is being rendered in a ListView then there's a chance that multiple DropDownLists are going to be instantiated, each will get a unique ID and you wouldn't be able to use Matthew's approach.
You might want to use the ItemDataBound event to access e.Item.FindControl("NameOfDropDownList") which will allow you to iterate on each dropdown created.
If you are only creating one... why it is in a ListView?
Upvotes: 2
Reputation: 26190
Try this:
DropDownList ddl = (DropDownList)lvUserOverview.FindControl("NameOfDropDownList");
Upvotes: 0