The short answer is that you're trying to combine server-side and client-side code. You've got a global setup and load via ASP.Net, then the 'on-change' of the Selection List is doing some kind of postback to call a server-side function.
You're setting it up to do a request to the server, so it reloads the entire page. And resets the selection in the box, too, probably. Or doesn't do anything. Regardless, you have weird functionality because you're trying to mix functionality between client and server.
I suggest you debug through putting a stop point at the start of your Page_Load() and the start point of your function and seeing what exactly the server is doing after you change the value. Most likely you will be surprised at the order of operations.
To do what I think you're trying to do, I think you'll probably have to use either IsPostBack or Javascript. Sorry.
I suggest you look at this post: ASP.NET DropDownList OnSelectedIndexChanged event not fired I think that there might be some help for you inside.