Важно знать, как ASP.Net определяет, какие события вызывать. Источник каждого события передается с использованием скрытого поля:
<input type="hidden" name="__EVENTTARGET" value="" />
Всякий раз, когда страница загружается, она извлекает источник события из этого поля и затем определяет, какое событие вызывать. Теперь все это прекрасно работает для элементов управления, добавленных через разметку, поскольку все дерево элементов управления обновляется при каждом запросе.
Однако ваш контроль был добавлен только один раз. Когда происходит обратная передача, ваш элемент управления больше не существует как серверный элемент управления в дереве, и, следовательно, событие никогда не срабатывает.
Простой способ избежать этого - убедиться, что ваши динамические элементы управления добавляются каждый раз, когда страница загружается, либо через событие Page_Init
, либо событие Page_Load
.