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

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

Заранее спасибо!

 strLine = strLine.Trim();
 System.Diagnostics.Debug.WriteLine("[3-a] ship by date - date: " + strLine);

 try{ shipByDate = (Convert.ToDateTime(strLine)); }
 catch (Exception e) { shipByDate = new DateTime(); }

 shipByDesc = sr.ReadLine().Trim();
 System.Diagnostics.Debug.WriteLine("[3-b] ship by date - desc: " + shipByDesc);

 RadioButton button = new RadioButton();
 button.Text = shipByDesc + " - " + shipByDate.ToString("MM/dd/yyyy");
 button.Checked = false;
 button.GroupName = "shipByOptions";
 button.ID = "shipByRadio" + count;

 //button.EnableViewState = true;
 button.AutoPostBack = true;
 button.CheckedChanged += new EventHandler(shipBy_CheckedChanged); // <-- doesn't work!!!

 //form1.Controls.Add(button);
 shipByPlaceHolder.Controls.Add(button);

1 ответ

Решение

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

Если вы подумаете об этом на мгновение, это будет иметь смысл - если кнопка не была создана (на обратной передаче), то нет событий кнопки, которые могут сработать. Кнопка должна существовать до того, как события, связанные с ней, могут быть запущены.

OnInit Событие страницы - наиболее подходящее место для добавления динамических элементов управления на страницу.

Читайте о жизненном цикле страницы asp.net.

Другие вопросы по тегам