Dropdown control is not serializable so when tring to store it in the viewstate the code breaks. Instead of saving the sender it would be more appropriate to save the ID of the dropdown in the ViewState. By the ID you can always find the control usin FindControl("Id")
function. Exaple based on your code:
ViewState["sender"] = ddlControl.ID;
DropDownList ddl = (DropDownList)FindControl(ViewState["sender"]);
Hope this helps.