Динамически добавленные элементы управления вызывают статическое событие кнопки только после второго щелчка - PullRequest
0 голосов
/ 12 августа 2010

У меня есть пользовательский элемент управления, который состоит из динамического списка элементов управления и статической кнопки, которая объявляется (вместе с объявлением OnClick) на странице aspx. Кнопка показывает или скрывает панель, содержащую динамический список управления.

Я обнаружил проблему, которая, по-моему, предполагает , связана с динамически добавляемыми элементами управления, где метод события кнопки (даже если он не добавлен динамически) срабатывает только при втором щелчке. Я думаю это как-то связано с тем, что метод события кнопки подключается до создания элементов управления, а метод события неправильно подключается при обратной передаче, когда внезапно появляются новые динамические элементы управления на странице. , На втором щелчке это работает, потому что динамические элементы управления были созданы и просто сохраняются. (Пожалуйста, кто-то исправит меня, если я ошибаюсь - я потратил весь день на отслеживание этого :()

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

1 Ответ

0 голосов
/ 12 августа 2010

Вы уверены, что кнопки снова включаются при первом нажатии?В противном случае это может быть что-то связанное на стороне клиента.Если предположить, что эта кнопка отправляет сообщения обратно в первый раз, а ее кнопка отправки (UseSubmitBehavior = "true"), то проблема может быть связана с

  1. Пользовательский элемент управления может быть добавлен после обработки данных после передачи (обработка данных поста ответственна за возникновение события кнопки)
  2. По какой-то причине идентификатор элемента управления (уникальный идентификатор) изменяется на задних сторонах сообщения или идентификатор кнопки изменяется со времени обработки данных сообщения до времени отрисовки элемента управления.

В случае, если вы не можете решить проблему, вы можете пойти другим путем - просмотрев почтовые данные, такие как

if (Request.Form[button.UniqueID] != null) { // Do button click processing }
...