Код упрощен, чтобы сделать его более понятным.
Описание
Я пишу пользовательский элемент управления, который использует Controls.Add () для добавления всех необходимых элементов управления.
Скажем, например, мой элемент управления называется "lots_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 (и на предыдущей опубликованной форме).
Кто-нибудь видел что-нибудь подобное?