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

Cargar un segundo dropdownlist dependiendo del primer dropdownlist

Estas en el tema de Cargar un segundo dropdownlist dependiendo del primer dropdownlist en el foro de ASPX (.net) en Foros del Web. Estimados, tengo 2 dropdownlist en mi pagina aspx y la cosa es que el primero lo tengo cargado con 3 items, CLIENTE, OBRA y ORDEN ...
  #1 (permalink)  
Antiguo 17/07/2009, 13:22
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Cargar un segundo dropdownlist dependiendo del primer dropdownlist

Estimados, tengo 2 dropdownlist en mi pagina aspx y la cosa es que el primero lo tengo cargado con 3 items, CLIENTE, OBRA y ORDEN y dependiendo de esto cargar el segundo drop de la base de datos. esto quiere decir que si elijo CLIENTE se cargue el segundo drop con los clientes y asi sucesivamente.

El segundo drop lo cargo mediante el SelectedIndexChanged del primer drop, pero al momento de elegir la lista en el primer drop se me acumulan todos en el segundo.

Como arreglo esto?

Espero que me puedan ayudar, adios.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #2 (permalink)  
Antiguo 17/07/2009, 13:32
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: Cargar un segundo dropdownlist dependiendo del primer dropdownlist

Coloca tu codigo....
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.
  #3 (permalink)  
Antiguo 17/07/2009, 13:40
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Cargar un segundo dropdownlist dependiendo del primer dropdownlist

Estimado aqui dejo mi codigo:

El codigo de la aspx:

Código PHP:
 <asp:DropDownList ID="ddl_filtro" runat="server" Width="150px"
                        
onselectedindexchanged="ddl_filtro_SelectedIndexChanged"
                        
AppendDataBoundItems="true" AutoPostBack="True">
                        <
asp:ListItem Selected="True">CLIENTE</asp:ListItem>
                        <
asp:ListItem>OBRA</asp:ListItem>
                        <
asp:ListItem>ORDEN</asp:ListItem>
                    </
asp:DropDownList>

<
asp:DropDownList ID="ddl_filtro2" runat="server" Width="150px" 
                        
onselectedindexchanged="ddl_filtro2_SelectedIndexChanged"
                        
AppendDataBoundItems="true" AutoPostBack="True" >
                        <
asp:ListItem Text="SELECCIONE" Enabled="true" Value="-1"></asp:ListItem>
                    </
asp:DropDownList
El primer dropdownlist:

Código PHP:
protected void ddl_filtro_SelectedIndexChanged(object senderEventArgs e)
    {
        if (
this.ddl_filtro.SelectedItem.Value == "CLIENTE")
        {
            
Conexion con = new Conexion();
            
con.Conectar();
            
string sql1 "SELECT DISTINCT CLIENTE.RUT, (CLIENTE.NOMBRE+' '+CLIENTE.APELLIDOP+' '+CLIENTE.APELLIDOM) AS CLIENTE FROM CLIENTE INNER JOIN OBRA ON CLIENTE.RUT = OBRA.RUT INNER JOIN ORDEN ON OBRA.IDOBRA = ORDEN.IDOBRA INNER JOIN DETALLEORDEN ON ORDEN.NFABRICACION = DETALLEORDEN.NFABRICACION WHERE (DETALLEORDEN.TIPODET = 'VENTANA')";
            
SqlDataAdapter da = new SqlDataAdapter(sql1con.get_conecction());
            
DataSet ds = new DataSet();
            
da.Fill(ds"CLIENTE");
            
this.ddl_filtro2.DataTextField ds.Tables["CLIENTE"].Columns["CLIENTE"].ToString();
            
this.ddl_filtro2.DataValueField ds.Tables["CLIENTE"].Columns["RUT"].ToString();
            
this.ddl_filtro2.DataSource ds.Tables["CLIENTE"];
            
this.ddl_filtro2.DataBind();
            
con.Desconectar();
        }
        else
        {
            if (
this.ddl_filtro.SelectedItem.Value == "OBRA")
            {
                
Conexion con = new Conexion();
                
con.Conectar();
                
string sql2 "SELECT OBRA.IDOBRA,OBRA.OBRA, DETALLEORDEN.TIPODET FROM CLIENTE INNER JOIN OBRA ON CLIENTE.RUT = OBRA.RUT INNER JOIN ORDEN ON OBRA.IDOBRA = ORDEN.IDOBRA INNER JOIN DETALLEORDEN ON ORDEN.NFABRICACION = DETALLEORDEN.NFABRICACION WHERE (DETALLEORDEN.TIPODET = 'VENTANA')";
                
SqlDataAdapter da = new SqlDataAdapter(sql2con.get_conecction());
                
DataSet ds = new DataSet();
                
da.Fill(ds"OBRA");
                
this.ddl_filtro2.DataTextField ds.Tables["OBRA"].Columns["OBRA"].ToString();
                
this.ddl_filtro2.DataValueField ds.Tables["OBRA"].Columns["IDOBRA"].ToString();
                
this.ddl_filtro2.DataSource ds.Tables["OBRA"];
                
this.ddl_filtro2.DataBind();
                
con.Desconectar();
            }
            else
            {
                if (
this.ddl_filtro.SelectedItem.Value == "ORDEN")
                {
                    
Conexion con = new Conexion();
                    
con.Conectar();
                    
string sql3 "SELECT ORDEN.NFABRICACION FROM CLIENTE INNER JOIN OBRA ON CLIENTE.RUT = OBRA.RUT INNER JOIN ORDEN ON OBRA.IDOBRA = ORDEN.IDOBRA INNER JOIN DETALLEORDEN ON ORDEN.NFABRICACION = DETALLEORDEN.NFABRICACION WHERE (DETALLEORDEN.TIPODET = 'VENTANA')";
                    
SqlDataAdapter da = new SqlDataAdapter(sql3con.get_conecction());
                    
DataSet ds = new DataSet();
                    
da.Fill(ds"ORDEN");
                    
this.ddl_filtro2.DataTextField ds.Tables["ORDEN"].Columns["NFABRICACION"].ToString();
                    
this.ddl_filtro2.DataValueField ds.Tables["ORDEN"].Columns["NFABRICACION"].ToString();
                    
this.ddl_filtro2.DataSource ds.Tables["ORDEN"];
                    
this.ddl_filtro2.DataBind();
                    
con.Desconectar();
                }
            }
        }
    } 
El segundo dropdownlist:

Código PHP:
protected void ddl_filtro2_SelectedIndexChanged(object senderEventArgs e)
    {
        
Funciones fun = new Funciones();
        
this.parametro this.ddl_filtro2.SelectedItem.Value;
        
this.lbl_mensaje1.Text this.parametro;
    } 
Espero que me puedas ayudar.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #4 (permalink)  
Antiguo 17/07/2009, 14:02
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: Cargar un segundo dropdownlist dependiendo del primer dropdownlist

Intentalo asi a ver....
Fijate que controlo que el indice de tu primer drp sea mayor a 0 suponiendo que tenes como primer elemento un "Seleccionar" antes de tus opciones, si no lo tenes elimina ese if ok


protected void ddl_filtro_SelectedIndexChanged(object sender, EventArgs e)
{
Conexion con = new Conexion();
string sql1 = string.Empty;
SqlDataAdapter da = new SqlDataAdapter(sql1, con.get_conecction());
DataSet ds = new DataSet();

if (dll_filtro.SelectedIndex > 0) {
switch (dll_filtro.SelectedItem.Value) {
case "CLIENTE":
sql1 = "SELECT DISTINCT CLIENTE.RUT, (CLIENTE.NOMBRE+' '+CLIENTE.APELLIDOP+' '+CLIENTE.APELLIDOM) AS CLIENTE FROM CLIENTE INNER JOIN OBRA ON CLIENTE.RUT = OBRA.RUT INNER JOIN ORDEN ON OBRA.IDOBRA = ORDEN.IDOBRA INNER JOIN DETALLEORDEN ON ORDEN.NFABRICACION = DETALLEORDEN.NFABRICACION WHERE (DETALLEORDEN.TIPODET = 'VENTANA')";
break;
case "OBRA":
sql1 = "SELECT OBRA.IDOBRA,OBRA.OBRA, DETALLEORDEN.TIPODET FROM CLIENTE INNER JOIN OBRA ON CLIENTE.RUT = OBRA.RUT INNER JOIN ORDEN ON OBRA.IDOBRA = ORDEN.IDOBRA INNER JOIN DETALLEORDEN ON ORDEN.NFABRICACION = DETALLEORDEN.NFABRICACION WHERE (DETALLEORDEN.TIPODET = 'VENTANA')";
break;
case "ORDEN":
sql1 = "SELECT ORDEN.NFABRICACION FROM CLIENTE INNER JOIN OBRA ON CLIENTE.RUT = OBRA.RUT INNER JOIN ORDEN ON OBRA.IDOBRA = ORDEN.IDOBRA INNER JOIN DETALLEORDEN ON ORDEN.NFABRICACION = DETALLEORDEN.NFABRICACION WHERE (DETALLEORDEN.TIPODET = 'VENTANA')";
break;
}

try {
//abris conexion
con.Conectar();

da.Fill(ds);
ddl_filtro2.DataTextField = ds.Tables(0).Columns(0).ToString();
ddl_filtro2.DataValueField = ds.Tables(0).Columns(1).ToString();
ddl_filtro2.Items.Clear();
ddl_filtro2.DataSource = ds.Tables(0);

ddl_filtro2.DataBind();
}
catch (Exception ex) {
//aca capturas el error y haces un redirect a lo que quieras
Response.Redirect("~/paginaerror.aspx");
}
finally {
//cerras conexion
con.Desconectar();
}
}
else {
return;

}
}
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.
  #5 (permalink)  
Antiguo 17/07/2009, 23:41
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Cargar un segundo dropdownlist dependiendo del primer dropdownlist

Estimado, me envia a la pagina de error o se pega, mañana lo veo con mas tiempo y te digo.

Gracias, adios.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #6 (permalink)  
Antiguo 19/07/2009, 22:23
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Cargar un segundo dropdownlist dependiendo del primer dropdownlist

Estimado, lo intente con el if y sin el if y no me funciono, me pasa a la pagina de error.

Ahora de la forma que esta en mi codigo me funciona, el problema es que la informacion que se muestra en el drop 2 se incrementa la lista, por ejemplo: al seleccionar por primera vez en el drop 1 aparece la info en el drop 2 impecable, pero al elegir la segunda opcion en el drop 1 el drop 2 muestra la info de la primera opcion + la info de la segunda opcion y asi sucecivamente. asi que todabia no puedo hacerlo funcionar como deveria.

Gracias, adios.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #7 (permalink)  
Antiguo 20/07/2009, 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: Cargar un segundo dropdownlist dependiendo del primer dropdownlist

Bueno solo coloca esto antes de carga el drop

ddl_filtro2.Items.Clear();

Pero fijate donde se interrumpe el codigo que te pase con un debug ya que esta un poco mas lindo.
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.
  #8 (permalink)  
Antiguo 20/07/2009, 11:22
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Cargar un segundo dropdownlist dependiendo del primer dropdownlist

Estimado, como no me funciono el codigo que amablemente publicaste, justamente me encontre con esta linea (en tu codigo) ddl_filtro2.Items.Clear(); que hizo funcionar el codigo que tenia antes, asi que nuevamente gracias por tu ayuda, en todo caso igual voy a intentar hacer funcionar tu codigo.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #9 (permalink)  
Antiguo 20/07/2009, 11:24
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: Cargar un segundo dropdownlist dependiendo del primer dropdownlist

Ok de nada y saludos.
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.
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 07:52.