服务器控制事件处理程序?

时间:2009-08-19 02:47:56

标签: user-controls event-handling controls

我的网站上有一个下拉列表。为了代码可重用性,我把它变成了服务器控件。 一切都很好。但是我想为 SelectedIndexChanged

添加一个事件处理程序

这对我不起作用:

this.OnSelectedIndexChanged = "CultureSelectorControl1_SelectedIndexChanged";

接下来是:

 protected void CultureSelectorControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            // code here
        }

请告诉我这里要改变什么。谢谢!

1 个答案:

答案 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" />