Я подозреваю, что проблема, с которой вы сталкиваетесь, заключается в том, что написанный вами код не ожидает обратной передачи.Итак, что происходит ...
|---> The page finishes loading, triggering your DocumentCompleted method
|---> You set the selectedIndex on DropDown1
|---> You raise the onChange event for DropDown1
| |---> The page starts posting-back (1)
|---> You (attempt to) set the selectedIndex on DropDown2
|---> You raise the onChange event for DropDown2
| |---> The page starts posting-back (2)
|
...
...
...
|---> The page finishes re-loading from from postback (2)
По сути, вам нужно ждать после запуска обратной передачи для повторной загрузки страницы.Не элегантный, хрупкий и почти наверняка сломанный / неработающий способ сделать это состоит в том, чтобы вызвать Таймер или аналогичный, чтобы через определенный промежуток времени (столько времени, сколько требуется для обратной передачи) вызатем продолжите установку selectedIndex для DropDown2.Лучшим вариантом было бы сделать что-то вроде этого:
|---> The page finishes loading, triggering your DocumentCompleted method
|---> You attach a new EventHandler to DocumentCompleted that contains the
| code for changing the selectedIndex on DropDown2 and REMOVE this
| eventhandler
|---> You set the selectedIndex on DropDown1
|---> You raise the onChange event for DropDown1
|---> Your code in the DocumentCompleted handler finishes executing
|---> // This is the DocumentCompleted handler that you assign above
|---> You set the selectedIndex on DropDown2
|---> You raise the onChange event for DropDown2
|---> Your code in the DocumentCompleted handler finishes executing
Есть более элегантные способы сделать это, но это, вероятно, проще всего объяснить.