如何在自动回发后检索中继器中的同级/邻居控件
本文关键字:控件 邻居 中继器 检索 | 更新日期: 2024-10-25 10:48:57
我有一个下拉列表,其中包含 SelectedIndexChanged 事件和autopostback = true
。在此下拉列表右侧的aspx中,我有一个标签。但这些都在中继器内。因此,当 SelectedIndexChanged 触发时,如果事件的范围来自 DDL 而不是转发器,我如何在服务器端捕获标签对象。
阿斯普克斯
<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>
代码隐藏
protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
//How to get this label1
//label1.Text = "Message" ;
}
您可以使用
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";
}
或 control.namemingContainer 属性
protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
var dropdownlist = sender as DropDownList;
var label = dropdownlist.NamingContainer.FindControl("label1") as Label;
label.Text = "Message";
}
您可以抓取下拉列表的同级,如下所示:
protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
var theDropDownList = sender as DropDownList;
// Make sure we have the drop down list before we try to use it
if(theDropDownList != null)
{
// Find the naming container of the drop down list
var theRepeaterItem = control.NamingContainer as RepeaterItem;
// Make sure we have the repeater item before we try to use it
if (theRepeaterItem != null)
{
// Find the the label by name
var theLabel = theRepeaterItem.FindControl("label1") as Label;
// Make sure we have the label before we try to use it
if(theLabel != null)
{
// Do what you want with the label here
theLabel.Text = "Message";
}
}
}
}