События UserControl не работают в первый раз - PullRequest
3 голосов
/ 30 апреля 2009

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

Кто-нибудь может мне помочь?

Ответы [ 4 ]

3 голосов
/ 30 апреля 2009

Похоже, что при подключении к кнопке событие OnClick происходит не при каждой загрузке страницы, что необходимо.

Можете ли вы гарантировать, что подключение выполняется при добавлении элемента управления и после повторного добавления на страницу? Я всегда помещаю свои ловушки событий в обработчики событий Page_Init или Page_Load и вне любой проверки Postback. Попробуйте установить точку останова на обработчике Handler и посмотрите, не получит ли точка останова дважды.

Подключение события для кнопки будет выглядеть примерно так:

protected void Page_Load(object sender, EventArgs e)
{
    btnSearch.Click += new EventHandler(btnSearch_Click); // breakpoint on this line
}
2 голосов
/ 04 мая 2009

Идентификатор клиента элемента управления получается из идентификатора всех содержащихся элементов управления, помеченных с помощью интерфейса INamingContainer . Поэтому убедитесь, что ВСЕ элементы управления в иерархии имеют фиксированный идентификатор.

Например, если у вас есть элемент управления Button внутри повторителя, идентификатор кнопки и повторитель объединяются для создания идентификатора клиента для кнопки. Таким образом, и повторитель, и кнопка должны иметь одинаковые идентификаторы для всех обратных передач.

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

1 голос
/ 30 апреля 2009

Назначьте идентификатор для вашего динамически созданного элемента управления, иначе никакие события не будут запущены.

0 голосов
/ 30 апреля 2009

Вы ждете загрузки полной страницы, прежде чем нажать кнопку?

События - это функции javascript, скрытые ASP.Net на странице, которые могут отсутствовать в момент нажатия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...