You will want to only populate the data for the first load...
so...
VB Code:
Private Sub Page_Load (...
If Not IsPostBack Then
'Load your data into your dropdowns
End If
End Sub
As far as not seeing all your data in your datalist, you are probably suffering from object conversion errors, but without Option Strict enabled, you have become unaware of them.
OR
Preferably, you should simply set the datasource to your reader, and call DataBind on the datalist.
VB Code:
Dim dr As System.Data.SqlClient.SqlDataReader = SqlCommand1.ExecuteReader(CommandBehavior.CloseConnection)
DataList1.DataSource = dr
DataList1.DataBind()
dr.Close()