Почему в моем состоянии просмотра не сохраняется добавление динамического элемента управления с помощью Controls.Add? - PullRequest
1 голос
/ 02 октября 2009

Я пытаюсь загрузить элемент управления в зависимости от идентификатора категории, выбранного в раскрывающемся списке.

Это тот код, который у меня есть в инструкции switch, чтобы показать usercontrol. Это был единственный способ, которым я знал, что делал это и имел многоразовые взгляды. Я открыт для других методов, поскольку я читал несколько человек, говорящих, чтобы избежать динамической загрузки?

var control =  Page.LoadControl("~/usercontrols/aCertainForm.ascx");
exampleDivArea.Controls.Add(control);

В данный момент он отлично загружается при нажатии кнопки, которая вызывает вышеуказанный код, но когда я снова возвращаюсь в ту же форму, он теряет свое состояние для динамического управления.

Спасибо за ваши ответы заранее, я ценю это и, надеюсь, скоро я смогу помочь другим намного больше:)

Ответы [ 2 ]

1 голос
/ 02 октября 2009

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

(Да, это очень уродливо и действительно разрушает всю абстракцию ASP.NET, как это делают многие вещи. Извините: -)

0 голосов
/ 02 октября 2009

После загрузки элемента управления назначьте его идентификатор. Этот код должен выполняться на начальном дисплее и при обратной передаче. И убедитесь, что используемый идентификатор совпадает.

Вот код, который я бы использовал в Page_Load:

var control =  Page.LoadControl("~/usercontrols/aCertainForm.ascx");
control.id = "ACertainFormControl01";
exampleDivArea.Controls.Add(control);

if (IsPostBack)
{
    do stuff
}
else
{
    do stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...