Динамическое создание / загрузка пользовательского элемента управления работает только один раз! - PullRequest
4 голосов
/ 16 июля 2011
protected void addMoreDay_btn_Click(object sender, EventArgs e)
        {
            Control OneMoreDay = LoadControl("~/controls/Days/DayAdd.ascx");
            Days_div.Controls.Add(OneMoreDay);
        }

Я загружаю свой userControl динамически в элемент div ... но проблема в том, что он работает только один раз! .. Я имею в виду, что я нажимаю кнопку addMoreDay_btn, и она работает, затем я пытаюсь щелкнуть ее снова, это не создаст другой экземпляр моего элемента управления!

Редактировать

Я думаю, что это работает, но он не сохраняет последний созданный .. он просто заменяет его вновь созданным элементом управления ... и все же я не знаю, как это решить! = S

1 Ответ

5 голосов
/ 16 июля 2011

Проблема возникает из-за того, что динамически добавленный элемент управления уничтожается на каждой обратной передаче непосредственно перед ее повторным созданием. Чтобы динамические элементы управления сохранялись для постбэков, вам нужно будет добавлять их каждый раз, когда страница отправляет обратно.

Попробуйте следующий код. Обратите внимание, что элементы управления добавляются в методе Page_Init:

protected void addMoreDay_btn_Click(object sender, EventArgs e)
{
    Control OneMoreDay = LoadControl("~/controls/Days/DayAdd.ascx");
    Days_div.Controls.Add(OneMoreDay);
    Session["MyControl"] += 1
}


protected void Page_Init(object sender, EventArgs e)
{
    for (int i = 1; i <= (int)Session["MyControl"]; i++) {
        Control OneMoreDay = LoadControl("~/controls/Days/DayAdd.ascx");
        Days_div.Controls.Add(OneMoreDay);        
    }
}

См. здесь

...