我的网站上有一个下拉列表。为了代码可重用性,我把它变成了服务器控件。 一切都很好。但是我想为 SelectedIndexChanged
添加一个事件处理程序这对我不起作用:
this.OnSelectedIndexChanged = "CultureSelectorControl1_SelectedIndexChanged";
接下来是:
protected void CultureSelectorControl1_SelectedIndexChanged(object sender, EventArgs e)
{
// code here
}
请告诉我这里要改变什么。谢谢!
答案 0 :(得分:0)
看起来您将事件连接的标记语法与等效代码混淆。如果您是DropDownList的子类,那么只需使用此代码在内部处理事件:
protected override void OnSelectedIndexChanged(EventArgs e)
{
// do your stuff here
// notify other subscribers
base(e);
}
控件不应订阅自己的活动。
如果您使用的是包含DropDownList控件的用户控件,并且您希望在用户控件中处理该事件,那么您可以在Page_Init期间在代码中以这种方式执行此操作:
protected void Page_Init(object sender, EventArgs e)
{
CultureSelectorControl1.SelectedIndexChanged += CultureSelectorControl1_SelectedIndexChanged;
}
或DropDownList的标记:
<asp:DropDownList ID="CultureSelectorControl1" Runat="server" OnSelectedIndexChanged="CultureSelectorControl1" />