I have a dropdownlist with the SelectedIndexChanged event and autopostback = true
. In the aspx on right of this dropdownlist I have a label. But these are inside a repeater. So when the SelectedIndexChanged fires how can I catch the label object in the server-side if the scope of the event is from the DDL and not the repeater.
Aspx
<asp:Repeater ID="repeater1" runat="server"
OnItemDataBound="repeater1_ItemDataBound"
OnItemCommand="repeater1_ItemCommand">
<ItemTemplate>
<asp:DropDownList ID="ddl1" runat="server"
OnSelectedIndexChanged="dd1_SelectedIndexChanged"
AutoPostBack="true" />
<asp:Label ID="label1" runat="server" />
</ItemTemplate>
</asp:Repeater>
Code-behind
protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
//How to get this label1
//label1.Text = "Message" ;
}
You can use Control.Parent Property.
protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
var dropdownlist = sender as DropDownList;
var label = dropdownlist.Parent.FindControl("label1") as Label;
label.Text = "Message";
}
Or Control.NamingContainer Property
protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
var dropdownlist = sender as DropDownList;
var label = dropdownlist.NamingContainer.FindControl("label1") as Label;
label.Text = "Message";
}