Foros del Web » Programación » .NET »

DropDownList Dependientes

Estas en el tema de DropDownList Dependientes en el foro de .NET en Foros del Web. Hola He buscado en el foro, pero no he encontrado una respuesta satisfactoria al caso donde tenemos dos o mas DropDownList en un desarrollo ASP.Net, ...
  #1 (permalink)  
Antiguo 19/04/2004, 15:59
Avatar de Leonardo A. Sanchez  
Fecha de Ingreso: julio-2000
Ubicación: Mexico D.F.
Mensajes: 151
Antigüedad: 14 años, 3 meses
Puntos: 0
DropDownList Dependientes

Hola

He buscado en el foro, pero no he encontrado una respuesta satisfactoria al caso donde tenemos dos o mas DropDownList en un desarrollo ASP.Net, y uno depende de Otro, teniendo pleno conocimiento de que cada uno carga valores de una Base de Datos.

Yo he probado varios metodos pero hasta ahora ninguno me convence, por ejemplo he probado usar DataReaders, debido a que se ejecutan mas rapido, pero se me hace muy poco ortodoxo, poner una conexion a la DB, por cada DataReader, que alimenta cada DropDownList.

Tambien estoy intentando ahora, leerme en un Dataset, 3 catalogos, que necesito anidar por medio de 3 DropDownList; de ellos, cuando se carga la pagina, solo inicializo el primero, y la idea es que al hacer seleccion de algun valor; entonces el segundo DropDownList, cargue los valores relacionados en la BD, pero no lo hace.

Estoy tratando por medio de un DataView, haciando algo asi..

Dim dvTopico As New DataView
dvTopico.Table = dsCatalogos.Tables("Topico")
dvTopico.RowStateFilter = DataViewRowState.CurrentRows
dvTopico.Sort = "Topico DESC"
dvTopico.RowFilter = "IdTema = '" & ddlTemaSource.SelectedItem.Value & "'"
With ddlTopicoSource
.DataTextField = "Topico"
.DataValueField = "IdTopico"
.DataSource = dvTopico
End With
ddlTopicoSource.DataBind()

Me deja el dropdown dependiente vacio. no se porque.

Alguien aqui tiene una buena idea de cual es la mejor practica para hacer esto?
__________________
En las manos de su manejador, la vida de Michael Jordan vale unos 20 millones, en las manos de Dios, cuanto crees que valdria tu vida? Entregasela y el hara de tu vida la mas valiosa del mundo entero.
  #2 (permalink)  
Antiguo 19/04/2004, 16:21
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 7.969
Antigüedad: 12 años, 8 meses
Puntos: 47
No entiendo bien tu problema... , lo que necesitas es que si tienes un dropdown quieres que dependiendo de lo que se seleccione cambie el dropdown2 ??

O si quieres detallarnos un poco mas podremos ayudarte.

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 20/04/2004, 10:37
Avatar de Leonardo A. Sanchez  
Fecha de Ingreso: julio-2000
Ubicación: Mexico D.F.
Mensajes: 151
Antigüedad: 14 años, 3 meses
Puntos: 0
Gracias RootK, bueno buscando y buscando ya encontre el medio, y aunque algo extraño para mi, el caso es que lo termine haciendo del siguiente modo.

Primero cargue todos los valores del catalogo que despliego en el primer DropDown, usando para ellos un dataset.

Luego, utilizo el evento onindexchange del dropdown, para llamar una funcion que se conecta a la base de datos, llena el dataset con el catalogo que necesito y lo filtra por medio de un dataview, esta dataview lo enlazo al segundo dropdown y luego hago algo identico para el tercer dropdown.

De modo tal que al final, si cambio el valor del primer dropdown, los otros dos se recargan, con el primer valor del catalogo correspondiente.

Ahora puse otro post, porque ya que tengo estos valores y los estoy almacenando en una matriz, quiero desplegar la lista que se va acumulando, pero no se que control usar y como enlazar la matriz para que lo haga.

Gracias de todos modos
__________________
En las manos de su manejador, la vida de Michael Jordan vale unos 20 millones, en las manos de Dios, cuanto crees que valdria tu vida? Entregasela y el hara de tu vida la mas valiosa del mundo entero.
  #4 (permalink)  
Antiguo 03/11/2004, 09:05
 
Fecha de Ingreso: septiembre-2004
Mensajes: 141
Antigüedad: 10 años
Puntos: 0
hola ayudame con la carga o podrias poner el codigo de la aplicacion para que todos podamos hacer esto y no repostear varias veces la misma pregunta en elforo
  #5 (permalink)  
Antiguo 03/11/2004, 19:06
Avatar de suncreative  
Fecha de Ingreso: octubre-2004
Ubicación: Reynosa, Tamaulipas
Mensajes: 47
Antigüedad: 10 años
Puntos: 0
Despues de tanto

He conseguido realizar el llenado de los 3 dropdownlist aunque para cada uno se ocupa una funcion de carga de la base de datos, pienso que se puede optimizar mas pero en fin ahi vere luego cualquiera que desee envieme un correo a [email protected] y con gusto les enviare una copia de como se hace
  #6 (permalink)  
Antiguo 08/11/2004, 09:05
Avatar de suncreative  
Fecha de Ingreso: octubre-2004
Ubicación: Reynosa, Tamaulipas
Mensajes: 47
Antigüedad: 10 años
Puntos: 0
Codigo aki

<%@ Page Language="VB" Debug="True" %>
<%@ import Namespace="System" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OLEDB" %>
<%@ import Namespace="System.Data.OleDb.OleDbException" %>
<script runat="server">

SUB PAGE_LOAD(obj As object, e As eventargs)

If Not (Page.IsPostBack)

RELLENA_DDLPROGRAMA()

else

descripcion()

end if

END SUB

SUB RELLENA_DDLPROGRAMA()

' ---- CON ESTE RELLENAMOS EL DEL PROGRAMA ----

Dim strConexion As String
Dim objConexion As OleDbConnection
Dim objComando As OleDbDataAdapter
Dim objDS As New DataSet
strConexion = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("db/tabla.MDB")
objConexion = New OleDbConnection(strConexion)
Dim objSelect as String = "SELECT * FROM PROGRAMAS;"
objComando = New OleDbDataAdapter(objSelect, strConexion)
objComando.Fill(objDS, "PROGRAMAS")
Dim Row
Dim I As Integer = 1
drop1.Items.Add("Seleccione")
drop1.Items.Item(0).Value = 0
For Each Row In objDS.Tables("PROGRAMAS").Rows
drop1.Items.Add(Row(0))
drop1.Items.Item(I).Value = Row(0)
I += 1
Next
objConexion.Close()

END SUB

SUB RELLENA_DDLSUBPROGRAMA(sender As System.Object, e As System.EventArgs)

' ---- CON ESTE RELLENAMOS EL DEL SUBPROGRAMA ----

call DESCRIPCION()

Dim strConexion2 As String
Dim objConexion2 As OleDbConnection
Dim objComando2 As OleDbDataAdapter
Dim objDS2 As New DataSet
strConexion2 = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("db/tabla.MDB")
objConexion2 = New OleDbConnection(strConexion2)
Dim objSelect2 as String = "SELECT CV_SUBPROGRAMA FROM SUBPROGRAMAS WHERE (CV_PROGRAMA = '" & drop1.SelectedItem.Value &"') GROUP BY CV_SUBPROGRAMA ;"
objComando2 = New OleDbDataAdapter(objSelect2, strConexion2)
objComando2.Fill(objDS2, "SUBPROGRAMAS")
Dim Row2
Dim I2 As Integer = 1
drop2.Items.Clear
drop2.Items.Add("Seleccione")
drop2.Items.Item(0).Value = 0
For Each Row2 In objDS2.Tables("SUBPROGRAMAS").Rows
drop2.Items.Add(Row2("CV_SUBPROGRAMA"))
drop2.Items.Item(I2).Value = Row2("CV_SUBPROGRAMA")
I2 += 1
Next
objConexion2.Close()

END SUB

SUB RELLENA_DDLSUBSUBPROGRAMA(sender As System.Object, e As System.EventArgs)

' ---- CON ESTE RELLENAMOS EL DEL SUBSUBPROGRAMA ----

call DESCRIPCION()

Dim objDS3 As New DataSet
dim strConexion3 as string = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("db/tabla.MDB")
dim objConexion3 = New OleDbConnection(strConexion3)
Dim objSelect3 as String = "SELECT CV_SUBSUBPROGRAMA FROM SUBSUBPROGRAMAS WHERE ((CV_PROGRAMA = '" & drop1.SelectedItem.Value & "') and (CV_SUBPROGRAMA = '" & drop2.SelectedItem.Value & "')) GROUP BY CV_SUBSUBPROGRAMA ;"
dim objComando3 = New OleDbDataAdapter(objSelect3, strConexion3)
objComando3.Fill(objDS3, "SUBSUBPROGRAMAS")
Dim Row3
Dim I3 As Integer = 1
drop3.Items.Clear
drop3.Items.Add("Seleccione")
drop3.Items.Item(0).Value = 0
For Each Row3 In objDS3.Tables("SUBSUBPROGRAMAS").Rows
drop3.Items.Add(Row3("CV_SUBSUBPROGRAMA"))
drop3.Items.Item(I3).Value = Row3("CV_SUBSUBPROGRAMA")
I3 += 1
Next
objConexion3.Close()

END SUB

SUB DESCRIPCION()

Dim DS1 As New DataSet
dim DS2 as new DataSet
dim DS3 as new DataSet
dim strConexion4 as string = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("db/tabla.MDB")
dim objConexion4 = New OleDbConnection(strConexion4)

' Esto es para cuando cambia el primer dropdownlist

Dim Desc1 as String = "SELECT DESCRIPCION FROM PROGRAMAS WHERE (CV_PROGRAMA = '" & drop1.SelectedItem.Value & "') GROUP BY DESCRIPCION; "
dim Comando1 = New OleDbDataAdapter(Desc1, strConexion4)
Comando1.Fill(DS1, "PROGRAMAS")
Dim DesPro
Dim I4 As Integer = 1
For Each DesPro In DS1.Tables("PROGRAMAS").Rows
txtMsg.text = " "
txtMsg.text = DesPro("DESCRIPCION")
I4 += 1
Next

' Esto es para cuando cambia el segundo dropdownlist

if not(drop2.SelectedItem.value = "Seleccione") then

dim Desc2 as string = "select DESCRIPCION from SUBPROGRAMAS Where ((CV_PROGRAMA = '" & drop1.SelectedItem.Value & "') and (CV_SUBPROGRAMA = '" & drop2.SelectedItem.Value & "')) group by DESCRIPCION; "
dim comando2 = new oledbdataadapter(Desc2, strConexion4)
comando2.fill(DS2, "SUBPROGRAMAS")
Dim despro2
dim i5 as integer = 1
for each despro2 in DS2.Tables("SUBPROGRAMAS").Rows
txtMsg.text += " "
txtMsg.Text += despro2("DESCRIPCION")
i5 += 1
next

end if

' Esto es para el tercer dropdownlist

if not(drop3.SelectedItem.value = "Seleccione") then

dim Desc3 as string = "select DESCRIPCION from SUBSUBPROGRAMAS Where ((CV_PROGRAMA = '" & drop1.SelectedItem.Value & "') and (CV_SUBPROGRAMA = '" & drop2.SelectedItem.Value & "') and (CV_SUBSUBPROGRAMA = '" & drop3.selecteditem.value & "')) group by DESCRIPCION; "
dim comando3 = new oledbdataadapter(Desc3, strConexion4)
comando3.fill(DS3, "SUBSUBPROGRAMAS")
Dim despro3
dim i6 as integer = 1
for each despro3 in DS3.Tables("SUBSUBPROGRAMAS").Rows
txtMsg.text += " "
txtMsg.Text += despro3("DESCRIPCION")
i6 += 1
next

end if

objConexion4.Close()

END SUB

</script>
<html>
<head>
</head>
<body>
<form runat="server">
<p>
<asp:DropDownList id="Drop1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="RELLENA_DDLSUBPROGRAMA"></asp:DropDownList>
</p>
<p>
<asp:DropDownList id="drop2" runat="server" AutoPostBack="true" OnSelectedIndexChanged="RELLENA_DDLSUBSUBPROGRAMA" >
<asp:ListItem>Seleccione</asp:ListItem>
</asp:DropDownList>
</p>
<p>
<asp:DropDownList ID="drop3" runat="server" AutoPostBack="true">
<asp:ListItem>Seleccione</asp:ListItem>
</asp:DropDownList>

<asp:TextBox BorderWidth="1" Columns="100" ID="txtMsg" MaxLength="100" ReadOnly="true" runat="server" TextMode="SingleLine"></asp:TextBox>
</p>
</form>
</body>
</html>

Para que no exista problemas de como realizarlo... si alguien consigue optimizarlo aviseme por favor...
  #7 (permalink)  
Antiguo 02/07/2008, 13:07
 
Fecha de Ingreso: julio-2008
Mensajes: 1
Antigüedad: 6 años, 3 meses
Puntos: 0
Respuesta: DropDownList Dependientes

HOla Amigo una de las cosas que tambien pudistes haber hecho es declararte una variable privada en donde guardas todos los datos y como ya estan guardados en un dataview luego le haces un rowfilter y te sacara los datos requeridos y la otra opcion que tendrias es rellenar en primera instancia los combos al cargar y luego preguntas si el combo ya tiene ese elemento no hace nada de lo contrario lo añade mas o menos asi

private dv as dataview

dim sql as string = select * from tabla
dim ds as dataset =bd.selectSql(conectionstring,sql)
dv= new dataview (ds.tables(0))
if dv.count >0 then
for i as integer =o to dv.count -1
dv.rowfilter= "campo que quieras"
if not cmbGrupo.items.contains(dv(fila)("Columna")) then
cmbgrupo.items.add (dv(fila)("Columna"))
end if
next
end if
  #8 (permalink)  
Antiguo 23/05/2014, 10:19
Avatar de mkcfernandez  
Fecha de Ingreso: junio-2007
Ubicación: Veracruz
Mensajes: 23
Antigüedad: 7 años, 4 meses
Puntos: 0
Respuesta: DropDownList Dependientes

hola colegas necesito me ayuden, estoy desarrollando un sitio web para tener control de ciertos movimientos en la empresa donde trabajo y me han planteado lo siguiente

tener dos juegos de combos dependientes uno de dos niveles y otro de tres y relacionarlos entre si de la siguiente manera

combo 1 (de dos niveles)

nombre de la empresa
razon social

se selecciona el nombre de una empresa y debe mostrar las distintas razones sociales que tiene y se selecciona una

combo 2 (tres niveles)
cuentas
subcuentas
conceptos

cada empresa lleva una cuenta una subcuenta y un conccepto distinto por lo tanto cuando se seleccione la empresa debe de cargar las cuentas, subcuentas y conceptos relacionado a la misma

espero ser claro en lo que quiero y me puedan ayudar

saludos



La zona horaria es GMT -6. Ahora son las 01:09.
SEO by vBSEO 3.3.2