Как мне программно назначить событие on click для маркированного списка, который был создан программно?

#c#

#c#

Вопрос:

Я попытался программно написать метод и назначить его как метод, вызываемый при событии onclick, но здесь что-то не так. Метод не вызывается.

BulletedList bulletList = new BulletedList();

Я добавил элементы в маркированный список с помощью bulletList.Items.Add(...);

Я попытался программно назначить метод bulletList_Click с bulletList.Click = new BulletedListEventHandler(bulletList_Click);

Это метод, который должен быть отключен

аннулировать bulletList_Click (отправитель объекта, BulletedListEventArgs e) { //коды здесь }

Комментарии:

1. Вы используете IDE, такую как VS, или пишете код вручную?

2. Привет, я использую Visual Studio. Кроме того, список маркеров создается программно.

Ответ №1:

Если вы не создали свой собственный специальный класс для обработки событий, вы, вероятно, просто ищете:

bulletList.Click = новый обработчик событий (bulletList_Click);

Редактировать:
На самом деле ваша команда указана там правильно. Однако, прочитав ваш комментарий выше о том, что он создан программно, у меня есть обновление:

Чтобы зарегистрировать событие для объекта, который создается программно, событие должно быть создано и добавлено к элементу управления на странице во время Page_Init события. Если этого не произойдет, объект не будет добавлен в viewstate и никакие события не будут доступны для просмотра.

Редактировать 2:
Вот статья о 4GuysFromRolla, которая помогла мне выполнить это в последний раз, когда мне это понадобилось. Вот следующая статья об этом, указывающая, почему событие Page_Init является подходящим, исходя из необходимости иметь элемент управления в ViewState. Я видел в другом месте на других форумах, что это можно обойти, убедившись, что при каждой обратной отправке элементы управления добавляются идентично последнему времени загрузки страницы, но я не проверял эту функциональность.

Комментарии:

1. Привет, я получаю Cannot implicitly convert Type 'System.EventHandler' to 'System.Web.UI.WebControls.BulletedListEventHandler'

2. Затем используйте ‘System.Web.UI.WebControls. BulletedListEventHandler’ вместо ‘EventHandler’, нет?

3. Да. Я действительно, взгляните на мой вопрос выше, я использовал BulletedListEventHandler .

4. @csl: Я добавил правку, основанную на одном из ваших комментариев. Ваш код в вопросе выглядит для меня хорошо, но, вероятно, он просто не запускается из-за того, когда создается объект.

5. Привет, но что произойдет, если маркированный список создается другими методами, отличными от Page_Init метода?

Ответ №2:

Вы пытались автоматически сгенерировать обработчик событий из интерфейса перетаскивания Visual Studio? Например, выбрав элемент управления, выбрав событие Click из списка событий справа, а затем просто написав код внутри сгенерированного обработчика?