динамические элементы управления с перезаписью С#

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

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++;

}

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

введите здесь описание изображения


person mechanical-legs    schedule 16.01.2012    source источник
comment
Можете ли вы опубликовать снимок экрана (или хотя бы ссылку на снимок экрана) того, что вы видите?   -  person ChrisF    schedule 17.01.2012
comment
Спасибо, Крис, вот ссылка: mechanical-legs.com/samples/cs_screen.jpg . Обведен элемент формы метки, который обновляется при каждом нажатии кнопки.   -  person mechanical-legs    schedule 17.01.2012
comment
Я предполагаю, что рядом с шагом 3 должно быть текстовое поле и метка.   -  person ChrisF    schedule 17.01.2012
comment
шаг 1, шаг 2 и шаг 3 — это ссылки, добавленные мастером формы. Извиняюсь. Я должен был упростить asp перед публикацией. Я загрузил более простой скриншот в том же месте, только с полями формы, метками и кнопкой.   -  person mechanical-legs    schedule 17.01.2012
comment
Попробуйте сделать Panel1.Controls.Add(pnl); последний звонок.   -  person Razor    schedule 17.01.2012
comment
Что ж, элементы все равно перезаписываются, даже если я добавляю панель в качестве последнего вызова. Я решил проблему с помощью javascript. Хотя я буду продолжать устранять неполадки с этим конкретным решением С#. Я думаю, было бы очень полезно генерировать элементы формы с помощью кода.   -  person mechanical-legs    schedule 17.01.2012


Ответы (1)


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

Вот дополнительная информация: http://forums.asp.net/t/1186195.aspx/ 1

person x0n    schedule 17.01.2012