Динамически добавляя элементы управления от события после страницы_инита

StackOverflow https://stackoverflow.com/questions/2835152

Вопрос

Может показаться названием DAFT, поскольку вы не должны добавлять динамические элементы управления после Page_init, если вы хотите сохранить ViewState, но я не мог думать о лучшем способе объяснить проблему.

У меня есть класс, аналогичный следующему:

public class WebCustomForm : WebControl, IScriptControl
{
    internal CustomRender Content
    {
        get
        {
            object content = this.Page.Session[this.SESSION_CONTENT_TRACKER];
            return content as CustomRender;
        }
        private set
        {
            this.Page.Session[this.SESSION_CONTENT_TRACKER] = value;
        }
    }
}

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

На Page_Init страницы, которая проводит WebCustomForm, Я инициализирую контроль, передав соответствующие идентификаторы к нему. Затем на переопределении OnInit метод WebCustomForm Я называю создание инстанции на CustomRender Контроль, который в настоящее время активен:

if (this.Content != null)
{
     this.Content.InstantiateIn(this);
}

Проблема в том, что мой CustomRender элементы управления нужна способность менять CustomRender контроль над WebCustomForm. Отказ Но когда события, которые огонь на устойчивом огне, событие страницы_инита, очевидно, уже вышло. Итак, мой вопрос, как я могу изменить содержание WebCustomForm Из динамически добавленного контроля в нем?

То, как я вижу это, у меня есть три варианта:

  1. Я отделяю CustomRender Управляет в собственном режиме одних управлений и в основном иметь страницу ASPX на контроль и обрабатывать события сами на странице (хотя я надеялся просто сделать контроль, который я бросил на страницу и забыл о)
  2. Я не использую события и просто продолжаю запрашивать текущую страницу, но с различными параметрами запроса
  3. Я возвращаюсь к чертежной доске с любыми лучшими предложениями, которые могут мне дать.
Это было полезно?

Решение 2

Я пошел с вариантом 1. Я делал уклон с переустройством и только что создал отдельные элементы управления, которые нужно сидеть на разных страницах. Я добавил свойства, чтобы сделать URL-адреса отходов и созданные свойства сеанса для передачи идентификаторов между элементами управления, поэтому мне не нужно полагаться на ProcessParams.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top