2009-05-26 24 views
6

Tengo una lista desplegable sencilla (FFG) ...valor seleccionado no cambia en asp: DropDownList

<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="true" BackColor="LightSteelBlue" Font-Size="X-Small" 
    OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged1" Style="z-index: 102; left: 37px; position: absolute; top: 85px" Width="331px" 
    </asp:DropDownList> 

cual enlazar datos a usind caso onpageload ...

DropDownList2.DataSource = td.DataSet 
DropDownList2.DataSource = td 
DropDownList2.DataTextField = td.Columns("Name").ColumnName.ToString 
DropDownList2.DataValueField = td.Columns("VendorCode").ColumnName.ToString 
DropDownList2.DataBind() 

y onleselectedindexchaged un evento en el que intento es posible recuperar el valor nuevo como esto ...

Protected Sub DropDownList2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList2.TextChanged 
     Dim url As String = "sp_menu.aspx?sp=" & DropDownList2.SelectedValue 
     Session.Remove("sp") 
     Session("sp") = DropDownList2.SelectedValue 
     Session("spnm") = DropDownList2.SelectedItem.Text & " (" & DropDownList2.Text & ")" 
     Response.Redirect(url) 
    End Sub 

Pero siempre trae la primera Valu e no importa cuál se haga clic en la lista desplegable. Por favor ayuda!

+0

favor formatear su código! –

+0

Si ese ejemplo es correcto, especificó que el controlador de eventos sea DropDownList2_SelectedIndexChanged1 pero su código esté en DropDownList2_TextChanged. Se llama al manejador incorrecto o solo a un error tipográfico en la publicación? – Trotts

+0

El textchaged era una alternativa que estaba intentando, mi código está en DropDownList2_SelectedIndexChanged1 –

Respuesta

3

se puede tratar de utilizar

DropDownList2.SelectedItem.Value 

en lugar de

DropDownList2.SelectedItem.Text 
10

Ok ... algunas cosas ...

Primera DropDownList2_TextChanged no está conectado a su DropDownList por lo No veo cómo se desencadenará ese evento a menos que esté haciendo el cableado en su código detrás de

Segunda

Usted dice que este código aquí

DropDownList2.DataSource = td.DataSet 
DropDownList2.DataSource = td 
DropDownList2.DataTextField = td.Columns("Name").ColumnName.ToString 
DropDownList2.DataValueField = td.Columns("VendorCode").ColumnName.ToString 
DropDownList2.DataBind() 

está en su evento pageLoad. ¿Lo ha envuelto en un If Not IsPostBack, porque si no, volverá a vincular cada vez y perderá su selección anterior.

+0

No lo envolví en If Not IsPostBack porque redirijo al usuario a una página diferente cuando eligen un artículo ... Trataré de envolverlo y luego Regresar a ti. –

+0

Hola. Muchas gracias por su ayuda. Parece que tuve que envolverlo en If Not IsPostBack. Ahora funciona perfectamente. No sabía que la publicación posterior ocurre incluso si se ha producido un evento (en el que un usuario se redirige a una página diferente). Enfriar ... –

+0

Sin problemas. Lógicamente, lo que está sucediendo es que el índice seleccionado ha cambiado, que enciende un javascript con un __doPostBack en la misma página. El evento page_load se desencadena, luego se activa el evento SelectedIndexChanged y, a continuación, se redirige a la página siguiente. –

5

Cuando está enlazando datos en Page_Load, básicamente también está reiniciando el elemento seleccionado.

Debe envolver el código vinculante que existe en Page_Load dentro de un bloque if (! IsPostBack).

EDIT: ... Si o No IsPostBack Entonces ... End If en VB.NET

Cuestiones relacionadas