Do you use viewstate ?
If you use viewstate, don't fill on postbacks like Muhammad mentions.
If you don't use viewstate (some people prefer this, myself included) fill the dropdownlist in your OnInit event and grab SelectedValue in your button's Click handler.
It's important that you fill the dropdownlist in OnInit in this case, since the selectedvalue is set in between Init and Load. So if you fill it OnLoad, you override the selectedvalue it just had gotten.
It pretty much goes like this:
OnInit
Set values from Request.Form
OnLoad
Obviously a lot more happens, but these are the important steps in this scenario.