События пользовательского контроля не запускаются - PullRequest
1 голос
/ 23 января 2009

У меня есть пользовательский элемент управления с LinkButton на нем. Когда я щелкаю LinkButton, событие щелчка не срабатывает.

[ToolboxData("<{0}:View runat=server></{0}:View>")]
public class View : Control
{
    private LinkButton lbNextPage;
    protected override void CreateChildControls()
    {
        lbNextPage = new LinkButton() { ID = "lbNextPage", Text = "Next Page" };

        lbNextPage.Click += delegate(object sender, EventArgs e)
        {
            Page.Response.Write("Event Fires!");
        };

        Controls.Add(lbNextPage);
    }
}

Я извлек только код, отвечающий за рендеринг LinkButton и его события (что и указано выше), чтобы устранить все остальные факторы.

Есть идеи, почему событие не стреляет? Я что-то упустил?

1 Ответ

1 голос
/ 23 января 2009

Это связано с тем, что элемент управления создается слишком поздно в жизненном цикле страницы. Согласно документу MSDN Lifecycle , вам необходимо создавать любые динамические элементы управления в PreInit, а не в CreateChildControls. Если вы разрабатываете пользовательский элемент управления в том виде, в каком вы есть, все ваши динамические элементы управления должны быть созданы в переопределении Init, и события будут подключены там.

Надеюсь, это поможет! :)

...