Foros del Web » Programación para mayores de 30 ;) » .NET »

problema con DropDownlist dependientes

Estas en el tema de problema con DropDownlist dependientes en el foro de .NET en Foros del Web. Hola, en esta aplicacion sencilla tengo tres dropdownlist que enlazan a tres tablas distintas de una base de datos sql server, el problema es que ...
  #1 (permalink)  
Antiguo 15/02/2005, 08:23
Avatar de Sayra  
Fecha de Ingreso: diciembre-2004
Mensajes: 365
Antigüedad: 19 años, 5 meses
Puntos: 1
problema con DropDownlist dependientes

Hola, en esta aplicacion sencilla tengo tres dropdownlist que enlazan a tres tablas distintas de una base de datos sql server, el problema es que cuando los enlazo entre
veran cuando en el 1er drop seleccio un estado en 2do drop solo me muestra las ciudades correspondientes a ese estado, pero cuando selccionar alguna ciudad para el combo de ubicaciones entonces , no permite selccionar, ojala puedan aconsejarme algo de seguro tengo un error en el codijo y no lo veo. Abajo dejo el código. Gracias por todo

<%@ Page language="VB" Codebehind="Prueba10mil.aspx.cs" AutoEventWireup="True" Inherits="Rainbow.DesktopModules.Agencia.Prueba10m il" debug=true%>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<script language="vb" runat="server">

Sub Page_Load(Sender As Object, E As EventArgs)

If Not IsPostBack

Dim ds As DataSet
Dim MyConnection As SqlConnection
Dim MyCommand As SqlDataAdapter

ds = New DataSet ()
MyConnection = New SqlConnection("SERVER=MDS01; DATABASE=be; INTEGRATED SECURITY=false;PASSWORD=sa;USER=sa")

MyCommand = New SqlDataAdapter ("select EstadoID, Nombre_Estado from Estado", MyConnection)
MyCommand.Fill(ds,"Estado")

DropDownList1.DataSource = ds.Tables("Estado").DefaultView
DropDownList1.DataTextField = "Nombre_Estado"
DropDownList1.DataValueField ="EstadoID"
DropDownList1.DataBind()

end if
BindCiudad()
end sub

public Sub BindCiudad()


Dim dc As DataSet
Dim MyConnection2 As SqlConnection
Dim MyCommand2 As SqlDataAdapter

dc = New DataSet ()
MyConnection2 = New SqlConnection("SERVER=MDS01; DATABASE=be; INTEGRATED SECURITY=false;PASSWORD=sa;USER=sa")

MyCommand2 = New SqlDataAdapter ("select CiudadID, Nombre_Ciudad from Ciudad Where EstadoID=" &DropDownList1.SelectedItem.Value, MyConnection2)
MyCommand2.Fill(dc,"Ciudad")

DropDownList2.DataSource = dc.Tables("Ciudad").DefaultView
DropDownList2.DataTextField = "Nombre_Ciudad"
DropDownList2.DataValueField ="CiudadID"
DropDownList2.DataBind()
BindUbicacion()
end sub

public Sub BindUbicacion()

Dim du As DataSet
Dim MyConnection3 As SqlConnection
Dim MyCommand3 As SqlDataAdapter

du = New DataSet ()
MyConnection3 = New SqlConnection("SERVER=MDS01; DATABASE=be; INTEGRATED SECURITY=false;PASSWORD=sa;USER=sa")

MyCommand3 = New SqlDataAdapter("select UbicacionID, Descripcion from Ubicacion Where CiudadID=" &DropDownList2.SelectedItem.Value, MyConnection3)
MyCommand3.Fill(du,"Ubicacion")

DropDownList3.DataSource = du.Tables("Ubicacion").DefaultView
DropDownList3.DataTextField = "Descripcion"
DropDownList3.DataValueField ="UbicacionID"
DropDownList3.DataBind()

end sub

Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

BindCiudad()

End Sub

Private Sub DropDownList2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
BindUbicacion()
End Sub
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<TABLE height="635" cellSpacing="0" cellPadding="0" width="137" border="0" ms_2d_layout="TRUE">
<TR vAlign="top">
<TD width="137" height="635">
<form id="Form1" method="post" runat="server">
<TABLE height="120" cellSpacing="0" cellPadding="0" width="623" border="0" ms_2d_layout="TRUE">
<TR vAlign="top">
<TD width="10" height="15"></TD>
<TD width="613"></TD>
</TR>
<TR vAlign="top">
<TD height="41"></TD>
<TD>
<P>Estado:
<asp:dropdownlist id="DropDownList1" BackColor="AliceBlue" Font-Names="Arial" ForeColor="Black" AutoPostBack="True"
Runat="server"></asp:dropdownlist></P>
</TD>
</TR>
<TR vAlign="top">
<TD height="41"></TD>
<TD>
<P>Ciudad:
<asp:dropdownlist id="Dropdownlist2" BackColor="AliceBlue" AutoPostBack="True" Runat="server"></asp:dropdownlist></P>
</TD>
</TR>
<TR vAlign="top">
<TD height="23"></TD>
<TD>
<P>Ubicacion:
<asp:dropdownlist id="Dropdownlist3" BackColor="AliceBlue" AutoPostBack="True" Runat="server"></asp:dropdownlist></P>
</TD>
</TR>
</TABLE>
</form>
</TD>
</TR>
</TABLE>
</body>
</HTML>
  #2 (permalink)  
Antiguo 15/02/2005, 10:53
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Ubica tus métodos BindCiudad() y BindUbicacion() en el lugar correcto, por ejemplo para BindCiudad() sería dentro del evento SelectedIndexChanged de DropDownList1 y para BindUbicacion() sería dentro del evento SelectedIndexChanged de DropDownList2

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #3 (permalink)  
Antiguo 15/02/2005, 12:54
Avatar de Sayra  
Fecha de Ingreso: diciembre-2004
Mensajes: 365
Antigüedad: 19 años, 5 meses
Puntos: 1
Hola gracias por responder, pero segun lo que mi ami me parece es asi como estan ubicados
Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

BindCiudad()

End Sub

Private Sub DropDownList2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
BindUbicacion()
End Sub
no se si entendi mal tu explicacion
  #4 (permalink)  
Antiguo 15/02/2005, 21:14
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Disculpa no lo había visto, en todo caso tu problema radica en que llamas a BindCiudad() dentro de Page_Load (según tu código se ejecuta cada vez que haces postback), te sugiero que saques esa llamada a dicho método, tampoco hagas la llamada a BindUbicacion() dentro de BindCiudad(). Con el código que está dentro de SelectedIndexChanged es suficiente.


Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #5 (permalink)  
Antiguo 16/02/2005, 07:15
Avatar de Sayra  
Fecha de Ingreso: diciembre-2004
Mensajes: 365
Antigüedad: 19 años, 5 meses
Puntos: 1
Hola y si lo haga asi se cargan los tres drop, pero el drop2 no me deja seleccionar los item de ciudad que muestra,

Sub Page_Load(Sender As Object, E As EventArgs)

If Not IsPostBack

Dim ds As DataSet
Dim MyConnection As SqlConnection
Dim MyCommand As SqlDataAdapter

ds = New DataSet ()
MyConnection = New SqlConnection("SERVER=MDS01; DATABASE=be; INTEGRATED SECURITY=false;PASSWORD=sa;USER=sa")

MyCommand = New SqlDataAdapter ("select EstadoID, Nombre_Estado from Estado", MyConnection)
MyCommand.Fill(ds,"Estado")

DropDownList1.DataSource = ds.Tables("Estado").DefaultView
DropDownList1.DataTextField = "Nombre_Estado"
DropDownList1.DataValueField ="EstadoID"
DropDownList1.DataBind()
end if

Dim dc As DataSet
Dim MyConnection2 As SqlConnection
Dim MyCommand2 As SqlDataAdapter

dc = New DataSet ()
MyConnection2 = New SqlConnection("SERVER=MDS01; DATABASE=be; INTEGRATED SECURITY=false;PASSWORD=sa;USER=sa")

MyCommand2 = New SqlDataAdapter ("select CiudadID, Nombre_Ciudad from Ciudad Where EstadoID=" &DropDownList1.SelectedItem.Value, MyConnection2)
MyCommand2.Fill(dc,"Ciudad")

DropDownList2.DataSource = dc.Tables("Ciudad").DefaultView
DropDownList2.DataTextField = "Nombre_Ciudad"
DropDownList2.DataValueField ="CiudadID"
DropDownList2.DataBind()


Dim du As DataSet
Dim MyConnection3 As SqlConnection
Dim MyCommand3 As SqlDataAdapter

du = New DataSet ()
MyConnection3 = New SqlConnection("SERVER=MDS01; DATABASE=be; INTEGRATED SECURITY=false;PASSWORD=sa;USER=sa")

MyCommand3 = New SqlDataAdapter("select UbicacionID, Descripcion from Ubicacion Where CiudadID=" &DropDownList2.SelectedItem.Value, MyConnection3)
MyCommand3.Fill(du,"Ubicacion")

DropDownList3.DataSource = du.Tables("Ubicacion").DefaultView
DropDownList3.DataTextField = "Descripcion"
DropDownList3.DataValueField ="UbicacionID"
DropDownList3.DataBind()


End Sub


Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
If Not IsPostBack

Dim dc As DataSet
Dim MyConnection2 As SqlConnection
Dim MyCommand2 As SqlDataAdapter

dc = New DataSet ()
MyConnection2 = New SqlConnection("SERVER=MDS01; DATABASE=be; INTEGRATED SECURITY=false;PASSWORD=sa;USER=sa")

MyCommand2 = New SqlDataAdapter ("select CiudadID, Nombre_Ciudad from Ciudad Where EstadoID=" &DropDownList1.SelectedItem.Value, MyConnection2)
MyCommand2.Fill(dc,"Ciudad")

DropDownList2.DataSource = dc.Tables("Ciudad").DefaultView
DropDownList2.DataTextField = "Nombre_Ciudad"
DropDownList2.DataValueField ="CiudadID"
DropDownList2.DataBind()
end if
End Sub

Private Sub DropDownList2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim du As DataSet
Dim MyConnection3 As SqlConnection
Dim MyCommand3 As SqlDataAdapter

du = New DataSet ()
MyConnection3 = New SqlConnection("SERVER=MDS01; DATABASE=be; INTEGRATED SECURITY=false;PASSWORD=sa;USER=sa")

MyCommand3 = New SqlDataAdapter("select UbicacionID, Descripcion from Ubicacion Where CiudadID=" &DropDownList2.SelectedItem.Value, MyConnection3)
MyCommand3.Fill(du,"Ubicacion")

DropDownList3.DataSource = du.Tables("Ubicacion").DefaultView
DropDownList3.DataTextField = "Descripcion"
DropDownList3.DataValueField ="UbicacionID"
DropDownList3.DataBind()


End Sub
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 18:27.