Код упрощен, чтобы было понятнее.
Описание
Я пишу настраиваемый элемент управления, который использует Controls.Add () для добавления всех необходимых ему подэлементов управления.
Скажем, например, мой элемент управления называется «lot_of_text_boxes», и я добавляю минимальное количество текстовых полей и предоставляю кнопку (Controls.Add (button)), которая говорит «добавить новое текстовое поле».
Элемент управления отображается хорошо. Я нажимаю кнопку, OnLoad (EventArgs e) воссоздает субэлементы управления, и волшебство asp.net находит все мои опубликованные данные и заполняет текстовые поля, чтобы я мог их прочитать.
btnAddNew_Click (отправитель объекта, EventArgs e) вызывается для добавления нового текстового поля.
Сначала я попробовал Controls.Add (текстовое поле), но это помещает текстовое поле внизу под кнопкой добавления.
Я мог бы удалить кнопку, добавить текстовое поле и снова добавить кнопку, но я не хочу этого делать, потому что в реальном случае это непросто (много связанных кнопок и элементов управления переплетены).
Что я хочу сделать: Number_of_Textboxes_to_show ++; Controls.Clear (); OnLoad (новый EventArgs ());
это стирает элемент управления, чтобы начать заново, и воссоздает его с одним новым.
Проблема
поскольку постданные уже были загружены, страница перерисовывается, но все данные в полях были потеряны. Мне действительно нужна функция LoadPostData (), которая просматривает все субэлементы управления и перезагружает их данные поста.
для меня имеет смысл, что данные сообщения все еще находятся в памяти (я надеюсь), и все элементы управления на проходе 2 имеют тот же уникальный идентификатор, что и на проходе 1 (и в предыдущей форме, которая была опубликована).
Кто-нибудь видел что-нибудь подобное?