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

ropDownList SelectedIndexChanged

Estas en el tema de ropDownList SelectedIndexChanged en el foro de ASPX (.net) en Foros del Web. Hola foreros tengo unos DropDownList que se llenan de la siguinete manera, el DropDownList1 con un SqlDataSource, DropDownList2 y DropDownList3 de unos DataSet que requiere ...
  #1 (permalink)  
Antiguo 19/08/2008, 15:41
 
Fecha de Ingreso: abril-2008
Mensajes: 26
Antigüedad: 16 años
Puntos: 0
ropDownList SelectedIndexChanged

Hola foreros tengo unos DropDownList que se llenan de la siguinete manera, el DropDownList1 con un SqlDataSource, DropDownList2 y DropDownList3 de unos DataSet que requiere parametros de los DropDownList anteriores algo asi:

Código:
protected void  DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
                    
SqlConnection conexion = new SqlConnection(ConfigurationManager.ConnectionStrings["LineamientosConnectionString"].ConnectionString);
            string ssql;

            ssql = "SELECT id_art, resumen FROM Articulo WHERE contenido = 1 AND id_doc = " + Texto1;

            SqlCommand comando = new SqlCommand(ssql, conexion);
            SqlDataAdapter adaptador = new SqlDataAdapter(comando.CommandText, conexion);

            DataSet ds = new DataSet();
            adaptador.Fill(ds);
            return ds;          

           	this.DropDownList2.DataSource = ds;
            this.DropDownList2.DataValueField = "id_art";
            this.DropDownList2.DataTextField = "id_art";
            this.DropDownList2.DataBind();


        }
        protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
        {
            
            SqlConnection conexion = new SqlConnection(ConfigurationManager.ConnectionStrings["LineamientosConnectionString"].ConnectionString);
            string ssql;
            
            int tipo;
            ds = obj2.LlenaCombo_FraccFracc(DropDownList1.Text, DropDownList2.Text);
            this.DropDownList3.DataSource = ds;
            this.DropDownList3.DataValueField = "tipo";
            this.DropDownList3.DataTextField = "tipo";
            this.DropDownList3.DataBind();

            tipo = Convert.ToInt16(DropDownList3.Text);

            string nomcol;

            nomcol = "";

            if (tipo == 1)
            {
                nomcol = "letra";
            }
            else if (tipo == 2)
            {
                nomcol = "entero";
            }
            else if (tipo == 3)
            {
                nomcol = "romano";
            }

            ssql = "SELECT entero, " + nomcol + " FROM Tipo_fraccion";

            SqlCommand comando2 = new SqlCommand(ssql, conexion);
            SqlDataAdapter adaptador2 = new SqlDataAdapter(comando2.CommandText, conexion);

            DataSet ds2 = new DataSet();
            adaptador2.Fill(ds2);


            this.DropDownList3.DataSource = ds2;
            this.DropDownList3.DataValueField = "entero";
            this.DropDownList3.DataTextField = nomcol;
            this.DropDownList3.DataBind();

        }
el problema es que si el DropDownList2 trae un solo registro no puedo llenar el DropDownList3 por que no aplico su evento SelectedIndexChanged, o si trae mas de uno para llenar el DropDownList3 tengo que elegir algun otro y regresar al primero ,si no lo hago no lo llena.... alguien sabe como puedo solucionarlo, ya lo intentente pegando mi codigo en el load pero me arroja un error....
  #2 (permalink)  
Antiguo 19/08/2008, 21:47
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: ropDownList SelectedIndexChanged

Primero:
Cuidado que estas retornando (y no le encuentro el sentido) en un procedimiento y no en una funcion.... return ds;

Segundo:
Si tu DropDownList2 no tiene resultados al cargarse para que queres el evento del tercer Drop?, solo lo tendrias que desabilitar ya que no tenes nada que seleccionar en el tercero, asi que controlarias en el evento del DropDownList1 si tu resultado para llenar el Drop2 es mayor a 0 y asi lo habilitas.

Esto va en el evento selectedindex.... de tu drop1 luego de cargar tu ds
if (ds.Tables[0].Rows.Count > 0)
{
DropDownList2.Enabled = false;
DropDownList3.Enabled = false;
}
else {
DropDownList2.Enabled = true ;
DropDownList3.Enabled = true ;
}


Tercero:
En el evento selectedindex del drop2....
if (ds.Tables[0].Rows.Count > 0)
{
DropDownList3.Enabled = false;
}
else {
DropDownList3.Enabled = true ;
}
DropDownList3.SelectedIndex = 0;


Todo esto es agregado a tu codigo colocado aca ok, Recomiendo un Case en lugar de 3 if pero va en gusto.
Saludos.
  #3 (permalink)  
Antiguo 20/08/2008, 17:19
 
Fecha de Ingreso: abril-2008
Mensajes: 26
Antigüedad: 16 años
Puntos: 0
Respuesta: ropDownList SelectedIndexChanged

Gracias mdavila!, con eso le di un plus a mis forms, por cierto para solucionar el problema de que si trae mas de un registro y que llene por default los demas drops sin tener que elegir algun otro, les agregue en el evento DataBound de los drops el codigo del SelectedIndexChanged, no se si eso sea lo correcto pero funciono, tu lo sabes?

Gracias Hermano me sacaste del hoyo!
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 15:12.