добавление обработчика событий в динамически создаваемый флажок (aspx, c #) - PullRequest
4 голосов
/ 04 ноября 2011

Итак, моя проблема в том, что я хочу добавить обработчик событий в динамически создаваемый CheckBox. Я уже рассмотрел другие способы сделать это и решил, что создание динамической таблицы, содержащей мои флажки, является лучшим вариантом для меня. Я не добавил эти флажки в дерево управления, потому что мне нужно управлять ViewState вручную. В любом случае, мой код работает во всех отношениях, за исключением того, что CheckChanged Event моего CheckBox не запускается. Я добавляю этот обработчик событий в свой CheckBox в моем событии pageLoad, однако любое событие страницы, которое я пытаюсь выполнить, дает мне те же результаты:

CheckBox chbxLv1 = new CheckBox();
chbxLv1.ID = "DymanicallyCreatedIDForIdentification";
chbxLv1.AutoPostBack = true;
chbxLv1.CheckedChanged += new EventHandler(this.checkChanged);

/* Way lower in my code */

protected void checkChanged(object sender, EventArgs e)
{
//Some code goes here which never seems to execute... grrr
}

Сначала я подумал, что это может быть проблемой с ViewState, и провел немало исследований по этому вопросу. Теперь я думаю, что делаю что-то глупое с добавлением обработчика событий. Я не уверен, почему это событие никогда не запускается, но я немного новичок в добавлении событий в элемент управления. Мне нужен делегат здесь?

- Роман

1 Ответ

2 голосов
/ 04 ноября 2011

Для правильной обработки динамически загруженных элементов управления в течение жизненного цикла страницы ASP.NET их необходимо добавить на страницу во время OnInit (или, на самом деле, до LoadViewState), иначе их информация о состоянии не будет сохранена, и вы можетефактически повреждает состояние просмотра в зависимости от того, как / где что-то добавлено в граф элемента управления страницы.

...