Динамически добавленный обработчик событий не запускается
Вот небольшой фрагмент кода, который, похоже, не работает для меня. Я читаю из файла, чтобы создать список переключателей. Проблема в том, что при нажатии одной из переключателей не запускается обработчик событий, который я настроил в коде. Я проверял это снова и снова в режиме отладки с переносами строк... все без удачи. Я что-то упускаю здесь очевидное????
Заранее спасибо!
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.