Перезагрузить сообщение в onClick в asp.net - PullRequest
0 голосов
/ 12 января 2010

Код упрощен, чтобы сделать его более понятным.

Описание

Я пишу пользовательский элемент управления, который использует 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 (и на предыдущей опубликованной форме).

Кто-нибудь видел что-нибудь подобное?

1 Ответ

1 голос
/ 12 января 2010

Похоже, проблема в простом размещении элемента управления. Если бы элементы управления были добавлены в нужное место (над кнопкой), не было бы необходимости стирать форму и перестраивать ее, правильно?

Я бы предложил добавить несколько элементов управления Panel или Placeholder к вашему пользовательскому элементу управления, чтобы определить его макет. Таким образом, ваши текстовые поля могут быть добавлены в Panel вместо общего пользовательского контроля, и ваш макет будет сохранен, а элементы управления будут там, где вы хотите.

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