Foros del Web » Programando para Internet » ASPX (.net) »

Dropdownlist devuelve siempre primer item.

Estas en el tema de Dropdownlist devuelve siempre primer item. en el foro de ASPX (.net) en Foros del Web. Hola amigos de forosdelweb.com, Es mi primera vez que creo un tema y espero me ayuden con lo siguiente, ya que siempre he encontrado las ...
  #1 (permalink)  
Antiguo 10/08/2010, 23:56
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
Exclamación Dropdownlist devuelve siempre primer item.

Hola amigos de forosdelweb.com,

Es mi primera vez que creo un tema y espero me ayuden con lo siguiente, ya que siempre he encontrado las respuestas aqui:

Estoy creando una pagina web aspx, donde cargo atravez de query, items para un dropdownlist2 dependiendo lo que se haya seleccionado previamente en el primer dropdownlist1.
Eso lo puedo hacer muy facilmente, ahora el problema es que cuando cambio de un item a otro en el dropdowlist2 y hago un nuevo query para guardar en otra tabla el item seleccionado, SIEMPRE me guarda el PRIMER item.

Este es el codigo del dropdownlist1:

protected void ddl1_TextChanged(object sender, EventArgs e)
{
ddl2.Items.Clear();
ddl2_SelectedIndexChanged(null, null);
}

Y este es el codigo del dropdownlist2:

protected void ddl2_SelectedIndexChanged(object sender, EventArgs e)
{
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = @"PROVIDER=Microsoft.Jet.OLEDB.4.0................ .");
OleDbCommand cmd = new OleDbCommand("SELECT equipo FROM Equipos WHERE liga='" + this.ddl1.Text + "' ORDER BY equipo ASC", cn);
OleDbDataReader data;
try
{
cn.Open();
data = cmd.ExecuteReader(CommandBehavior.CloseConnection) ;
ddl2.DataSource = data;
ddl2.DataTextField = "equipo";
ddl2.DataBind();
}
catch (Exception ex)
{
string m = ex.Message;
m = m.Replace("'", " ");
Response.Write("<script language='javascript'> { window.alert('" + m + "') } </script> ");
}
}

Espero me ayuden ya que he estado buscando por todos lados y no encuentro nada sobre eso.

Gracias.
  #2 (permalink)  
Antiguo 11/08/2010, 06:20
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: Dropdownlist devuelve siempre primer item.

Varias cosas....
Porque usas el evento TextChanged en el ddl1 y no usas el SelectedIndexChanged?
Y en este evento pones ddl2.Items.Clear() solamente ademas no!!!

this.ddl1.Text estaria mejor si usas this.ddl1.SelectedItem.Text (o Value).ToString()

EL problema de la carga del ddl seguramente es porque en tu Page_Load estas cargando el ddl1 siempre. Tenes que colocar un if page.ispostback y dentro el codigo de carga del ddl1

if (page.ispostback) {
//cargas el ddl1
}


Saludos
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.
  #3 (permalink)  
Antiguo 11/08/2010, 09:10
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Dropdownlist devuelve siempre primer item.

Cita:
Iniciado por mdavila Ver Mensaje
Varias cosas....
Porque usas el evento TextChanged en el ddl1 y no usas el SelectedIndexChanged?
Y en este evento pones ddl2.Items.Clear() solamente ademas no!!!

this.ddl1.Text estaria mejor si usas this.ddl1.SelectedItem.Text (o Value).ToString()

EL problema de la carga del ddl seguramente es porque en tu Page_Load estas cargando el ddl1 siempre. Tenes que colocar un if page.ispostback y dentro el codigo de carga del ddl1

if (page.ispostback) {
//cargas el ddl1
}


Saludos
Yo utilizo el TextChanged o SelectedIndexChanged para no utilizar if(Page.IsPostBack), porque si utilizo ambos, al momento de cambiar el item del ddl1 se ejecuta primero el if() y despues el ddl1_SelectedIndexChanged lo cual crea un doble llamado a la funcion ddl1_SelectedIndexChanged, y siempre me guarda en la db los valores del primer item del ddl2 cargado.
  #4 (permalink)  
Antiguo 11/08/2010, 09:35
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Dropdownlist devuelve siempre primer item.

YA ENCONTRE LA SOLUCION A MI PROBLEMA !!

Lo que yo hacia estaba mal, este seria el codigo correcto, no es necesario utilizar el if(Page.IsPostBack):

protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
ddl2.Items.Clear();
ddl3.Items.Clear();
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = @"PROVIDER=Microsoft.Jet.OLEDB.4.0................ ..");
OleDbCommand cmd = new OleDbCommand("SELECT equipo FROM Equipos WHERE liga='" + this.ddl1.SelectedItem.Text + "' ORDER BY equipo ASC", cn);
OleDbDataReader data;
try
{
cn.Open();
data = cmd.ExecuteReader(CommandBehavior.CloseConnection) ;
ddl2.DataSource = data;
ddl2.DataTextField = "equipo";
ddl2.DataBind();
}
catch (Exception ex)
{
string m = ex.Message;
m = m.Replace("'", " ");
Response.Write("<script language='javascript'> { window.alert('" + m + "') } </script> ");
}
}
  #5 (permalink)  
Antiguo 26/08/2010, 08:22
 
Fecha de Ingreso: agosto-2010
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Dropdownlist devuelve siempre primer item.

Cita:
Iniciado por mdavila Ver Mensaje
Varias cosas....
Porque usas el evento TextChanged en el ddl1 y no usas el SelectedIndexChanged?
Y en este evento pones ddl2.Items.Clear() solamente ademas no!!!

this.ddl1.Text estaria mejor si usas this.ddl1.SelectedItem.Text (o Value).ToString()

EL problema de la carga del ddl seguramente es porque en tu Page_Load estas cargando el ddl1 siempre. Tenes que colocar un if page.ispostback y dentro el codigo de carga del ddl1

if (page.ispostback) {
//cargas el ddl1
}


Saludos

Última edición por sanmon; 26/08/2010 a las 09:39

Etiquetas: dropdownlist, item, primer, siempre, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:13.