Вы отключили состояние просмотра для выпадающих меню, установив для них EnableViewState="false"
.
Посмотрите на заметку на MSDN :
Элемент управления списком должен сохраняться
значения между сообщениями на сервере для
это событие для правильной работы. Быть уверенным
это состояние просмотра включено для
управление списком.
Также OnSelectedIndexChanged
обработчик событий одинаков для каждого из вас выпадающих: OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
.
Все это означает, что после обратной передачи ваши выпадающие списки думают , что выбранное значение изменилось, если выбранное значение отличается от значения первого элемента списка. Вот почему ваш обработчик событий срабатывает дважды после второго постбэка или даже трижды после третьего.
Просто включите viewstate для выпадающих списков, чтобы предотвратить такое поведение.