Ну, первое, что бросается в глаза, это то, что вы динамически создали свой DropDownList ... но вы создали его внутри функции.
Вы должны иметь в виду, что переменные / объекты имеют область видимости. Область вашего DropDownList находится внутри функции, которую вы объявили. Это означает, что он будет добавлен на страницу и обработан, но как только он будет завершен, он будет уничтожен. Когда пользователь вызывает обратную передачу на сервер, DropDownList больше не существует ... и поэтому событие никогда не сработает.
Вы должны предоставить DropDownList область действия всей страницы.
Объявите это на уровне страницы.
Другая вещь, которую вы должны иметь в виду при использовании динамических элементов управления, это жизненный цикл ASP-страницы.
Страница размещена на сервере ...
Сервер создает все объекты, необходимые для выполнения серверных вычислений в событии инициализации страницы ....
Сразу после события инициализации страницы для страницы загружается ViewState ... ViewState используется для определения того, какие события вызвали обратную передачу.
Если ваш DropDownList не существует, когда ViewState загружен для элемента управления, событие будет потеряно, и ваш код не будет обрабатывать его.
Я рекомендую вам избегать использования динамических элементов управления.
Иногда вы должны использовать их ... но они не просты в использовании.
Я написал небольшую статью об использовании динамических элементов управления ASP.NET , которые могут помочь вам лучше понять.
-Frinny