Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

protected void Page_Load(object sender, EventArgs e)
{
    btnSearch.Click += new EventHandler(btnSearch_Click); // breakpoint on this line
}

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

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

События представляют собой функции JavaScript, скрытые ASP.Net на странице, которые могут отсутствовать во время щелчка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top