There are a couple things going on here, I believe. First, this event is firing when you first load the page. This is normal. However, your value for the drop down is not yet set, so you get an error. The second issue is that you are trying to fire this event right away, but I don't believe that will happen because this code is server-side. Unless you do a POST, you won't see the event fire. Instead, you need to use something like jQuery to handle your events.
For example, in jQuery, you could write the following section:
$("#dropdownID").change(function () {
<fire your event here>
});
Just make sure you put that inside the DOM ready event so it doesn't fire prematurely.
To learn more about the jQuery change event and to see a working example that will look a lot like your HTML code, look here:
http://api.jquery.com/change/[
^]
Please note that this has nothing to do with ASP.NET/C# code. In fact, if you implement this method, you should remove your event entirely from your code. Since that event will only fire after a server action (page load, POST, GET), it won't do what you want anyway.