Salve...
ho fatto una ricerca nel form prima di postare questo problema, ma non so se colpa mia di una svista o altro ma non ho trovato una soluzione.
Per questo chiedo aiuto direttamente.

Qualcuno sa perchè se creo una dropdownlist in designtime funziona in modo impeccabile mentre se la creo in runtime quando vado a cambiare selezione mi risponde sempre il primo valore?

il codice che uso è il seguente:
codice:
           Dim ddlSottoCategoria As New DropDownList
            ddlSottoCategoria.Text = Nothing
            ddlSottoCategoria.ID = "txtBox" '& x.ToString
            ddlSottoCategoria.AutoPostBack = True
            Panel1.Controls.Add(ddlSottoCategoria)
            ddlSottoCategoria.Visible = True
            If ddlSottoCategoria.Items.Count = 0 Then
                connetti(Session("database"))
                SQL = "SELECT * FROM ecommerce_categorie WHERE appartenenteCategoria = " & ddlCategoria.SelectedValue & " AND titoloCategoria <> 'Tutte'"
                objCmd = New SqlCommand(SQL, objConn)
                objDR = objCmd.ExecuteReader()

                Dim itm As New ListItem
                itm.Text = "Seleziona una categoria"
                itm.Value = 0
                ddlSottoCategoria.Items.Add(itm)
                Do While (objDR.Read())
                    Dim itm2 As New ListItem
                    itm2.Text = objDR("titoloCategoria").ToString()
                    itm2.Value = objDR("idCategoria")
                    ddlSottoCategoria.Items.Add(itm2)
                Loop
            End If
a priori dico che non posso fare il controllo se è un postbak perchè questa dropdownlist viene popolata e visualizzata da un postback, se facessi il controllo non si popolerebbe.
in ogni caso ho fatto anche prove mettendo dei valori manuali e non prendendoli da un db e inserendo il controllo nt ispostback e mi da lo stesso risultato.

Grazie in anticipo