Событие динамически добавленного управления не запускается - PullRequest
2 голосов
/ 28 августа 2009

Событие динамически добавленного элемента управления не запускается. Это происходит в функции, вызываемой в событии создания дочерних элементов управления страницы.

Button bb = new Button();
bb.Click += new EventHandler(bb_Click);
PlaceHolderQuestions.Controls.Add(bb);

Ответы [ 4 ]

1 голос
/ 28 августа 2009

страниц Asp.net имеют жизненный цикл . Диспетчеризация событий осуществляется на основе дерева управления. Ваш динамический элемент управления должен быть в дереве элементов управления. Добавьте элемент управления к заполнителю в OnInit или Onload вашей страницы или содержащем элемент управления, и событие будет отправлено.

0 голосов
/ 08 августа 2014

Помещение кода в более раннее событие не решит проблему. Даже если вы попытаетесь поместить свой код в Page_Load (), это не решит проблему.

В соответствии с жизненным циклом страницы попробуйте переопределить функцию OnLoad, заново создать и заново подключить динамически созданные элементы управления с теми же идентификаторами.

protected override void OnLoad(EventArgs e)
{
    Button bb = new Button() { ID = "myBtn" }
    bb.Click += new EventHandler(bb_Click);
    PlaceHolderQuestions.Controls.Add(bb);

    base.OnLoad(e);
}

protected void Page_Load(object sender, EventArgs e)
{
}
0 голосов
/ 28 августа 2009

Убедитесь, что эта кнопка также динамически создается для каждого Page_Load. Я часто делаю ошибку, помещая подобный код внутри:

If Not Page.IsPostback()
  ...
End if

Однако, поскольку Page_Load запускает до обработчик для нажатия кнопки, если вам не удалось создать кнопку во время обратной передачи, то кнопка не «существует» к моменту запуска ее события.

0 голосов
/ 28 августа 2009

Вы должны поместить это в более раннее событие. Попробуйте поместить код в обработчик события init.

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