Метод CreateChildControls ChildControls Не запускать события - PullRequest
0 голосов
/ 22 марта 2011

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

Я попробовал метод Init тоже не работает. Код выглядит так на CreateChildControls

  1. Я создаю панель.
  2. Я создаю таблицу с данными и кнопкой изображения на ней
  3. Я добавляю эту таблицу на созданную панель
  4. Я добавляю эту панель в метод Controls.Add.

Я также заметил, что, если я добавляю элемент управления непосредственно в метод Controls.Add () и прикрепляю событие, он работает нормально.

Значение, 1. Создайте кнопку, прикрепите обработчик события 2. Добавьте в метод Controls.Add ()

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

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

1 Ответ

0 голосов
/ 28 марта 2011

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

Проблема для меня - время. Пользовательский элемент управления с переопределенным методом CreatChildControls добавляется к элементам управления страницы в CreateChildControls самой веб-части. CCC пользовательского элемента управления не вызывается до тех пор, пока не сработает метод OnPreRender веб-части, как при обратной передаче, так и при обратной передаче.

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

Таким образом, чтобы решить эту проблему, нам нужно каким-то образом заставить метод CreateChildControls пользовательского элемента управления вызываться до конца загрузки, как во время CCC веб-части. Вы не можете вызвать метод вручную: метод защищен и недоступен извне, поэтому я ищу правильный способ сделать это.

Для тестирования я переименовал CCC в пользовательский элемент управления, чтобы сделать его обычным общедоступным методом, и вызвал этот метод из CCC веб-части. Теперь мое событие проходит нормально.

Если это не работает для вас, не могли бы вы опубликовать свой код, чтобы мы могли найти ошибку?

...