Обработать событие нажатия кнопки из пользовательского элемента управления, загруженного динамически - PullRequest
0 голосов
/ 31 июля 2010

У меня есть пустой пользовательский элемент управления (дочерний элемент), и во время Page_Load я создаю несколько текстовых полей и кнопку.Я также добавляю событие к кнопке.

Затем я динамически загружаю этот пользовательский элемент управления из заполнителя в другой пользовательский элемент управления (родительский).Оба элемента управления отображаются правильно, но когда я нажимаю на кнопку, событие не запускается.Любые идеи о том, как обрабатывать событие?

Дочерний код:

 protected void Page_Load(object sender, EventArgs e)
{    
    /*... other user controls ..*/
    UpdateButton = new LinkButton();
    UpdateButton.ID = "buttonid";
    UpdateButton.Text = "text";
    UpdateButton.Click += new EventHandler(UpdateButton_Click);
    this.Controls.Add(UpdateButton);
}

protected override void Render(HtmlTextWriter writer)
{
    for (int i = 0; i < this.Controls.Count; i++)
    {
        this.Controls[i].RenderControl(writer);
    }
}

public void UpdateButton_Click(object sender, EventArgs e)
{
    //Do stuff
}

Родительский код:

protected void Page_Load(object sender, EventArgs e)
{    
    placeholder.Controls.Clear();
    ChildControl uc = (ChildControl)LoadControl("~/UserControls/ChildControl.ascx");
    placeholder.Controls.Add(uc);
}

Если я использую непосредственный контроль над детьми (т.е. безродительский элемент управления) событие click вызывается и обрабатывается хорошо.Но когда я использую родительский элемент управления, отладчик даже не достигнет точки останова внутри UpdateButton_Click ().

Заранее спасибо.

1 Ответ

0 голосов
/ 31 июля 2010

Мне кажется, я знаю, что может происходить.В вашей родительской Page_Load вы звоните placeholder.Controls.Clear();. Это делает то, что вы себе представляете, и очищает элемент управления, включая все произошедшие события.Что происходит при удалении этой строки?Вы получаете дополнительный, созданный на каждом постбеке?

...