динамическое управление с перезаписью c # - PullRequest
2 голосов
/ 17 января 2012

Я пытаюсь добавить некоторые динамические элементы формы на мою страницу asp, используя c # при каждом нажатии кнопки.Код работает, но он перезаписывает себя, в отличие от размещения панели, надписи и текстового поля, созданных одним щелчком мыши после элементов, созданных в предыдущем щелчке.Счетчик контролируется глобальной переменной.Я, вероятно, упускаю что-то очень простое, но любая помощь будет отличной.Спасибо!

protected void Button1_Click(object sender, EventArgs e)
{

    Panel pnl = new Panel();
    pnl.ID = "Panel" + count.ToString();
    Panel1.Controls.Add(pnl);

    TextBox tb = new TextBox();
    tb.ID = "Textbox" + count.ToString();
    pnl.Controls.Add(tb);

    Label lbl = new Label();
    lbl.ID = "Label" + count.ToString();
    lbl.Text = "Label" + count.ToString();
    pnl.Controls.Add(lbl);
    count++;

}

Вы можете увидеть эффект здесь:

enter image description here

1 Ответ

1 голос
/ 17 января 2012

Каждый раз, когда нажимается кнопка, вы получаете обратную передачу. При последующей загрузке страницы asp.net не имеет памяти о предыдущих элементах управления, которые вы добавили в обработчик событий. Вам нужно будет отслеживать это самостоятельно - в viewstate - и воссоздавать ранее добавленные элементы управления в событии Init страницы, опрашивая viewstate до обработки следующей обратной передачи. Если вы не воссоздаете их в Init, они не будут работать правильно (например, они не смогут выполнять постбэкинг самостоятельно или иным образом вносить вклад в жизненный цикл события страницы).

Вот еще немного информации: http://forums.asp.net/t/1186195.aspx/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...