List relacionados

26/11/2003 - 15:23 por Hernan Nieto | Informe spam
Hola:

Como puedo hacer para tener 2 list en una pagina Asp, cada uno de ellos
consultando 2 tablas de una Bd de Sql Server, y que la seleccion de algun
item del 1er list me filtre solo los que cumplen esa condicion en el segundo
list. Se puede hace en la misma pagina o tengo que crear otra pagina que
reciba como parametro lo que se selecciono en el 1er list.

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Sashka
26/11/2003 - 16:14 | Informe spam
Lo puedes hacer en la misma página, por ejemplo si metes los list box en un
formulario(cuyo action será la misma página) puedes hacer que en el click
del primer listbox se ejecute un submit llamando a una función así:

function envialista1(){
document.nombreform.CAMPOOCULTO.value=document.nombreform.LIST1.value;
document.nombreform.submit();
}

En el asp recuperas el valor del request,form("CAMPOOCULTO") en una
variable incluso puedes hacer que la primera vez que se abra la página
(no haya request.form) la variable tome el valor del primer campo de la
lista 1 y te presente los valores relacionados en la lista 2

Sashka

"Hernan Nieto" escribió en el mensaje
news:%
Hola:

Como puedo hacer para tener 2 list en una pagina Asp, cada uno de ellos
consultando 2 tablas de una Bd de Sql Server, y que la seleccion de algun
item del 1er list me filtre solo los que cumplen esa condicion en el


segundo
list. Se puede hace en la misma pagina o tengo que crear otra pagina que
reciba como parametro lo que se selecciono en el 1er list.

Muchas gracias.



Respuesta Responder a este mensaje
#2 Hernan Nieto
27/11/2003 - 12:46 | Informe spam
Gracias Sashka por responder. Te entiendo la idea, no tengo mucha practica
en Asp, podrias ayudarme con un ejemplo.

Hernan
Respuesta Responder a este mensaje
#3 Hernan Nieto
27/11/2003 - 23:59 | Informe spam
Gracias Sashka, lo veo y te cuento como me fue
Respuesta Responder a este mensaje
#4 Hernan Nieto
28/11/2003 - 15:34 | Informe spam
Sashka:

Gracias a tu ayuda pude hacerlo funcionar, lo unico que me gustaria es que
el
Select nivel seleccione el nivel que el usuario eligio cuando se vuelve a
cargar la pagina, lo que hace ahora es seleccionar siempre la primera
opcion.

Te doy un ejemplo:

La tabla nivel tiene los niveles posibles de estudio:
BASICO,PRIMARIO,TERCIARIO,UNIVERISTARIO

La tabla estudios es filtrada solo los titulos que corresponden al nivel
seleccionado, todo funciona bien, solo que el select nivel siempre esta en
BASICO.

De nuevo gracias por tu ayuda.


****************codigo*************

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="../Connections/Recordset1.asp" -->

<%
Dim Recordset1__vcNivel
BASICO = request.form("nivel")
If (BASICO <> "") Then
Recordset1__vcNivel = BASICO
Else
Recordset1__vcNivel = "CICLO BÁSICO "
End If
%>

<%
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_Recordset1_STRING
Recordset1.Source = "{call dbo.sp_titulos('" + Replace(Recordset1__vcNivel,
"'", "''") + "')}"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

Recordset1_numRows = 0
%>
<%
Dim Recordset2
Dim Recordset2_numRows

Set Recordset2 = Server.CreateObject("ADODB.Recordset")
Recordset2.ActiveConnection = MM_Recordset1_STRING
Recordset2.Source = "{call dbo.sp_nivelestudio}"
Recordset2.CursorType = 0
Recordset2.CursorLocation = 2
Recordset2.LockType = 1
Recordset2.Open()

Recordset2_numRows = 0
%>

<HTML>
<HEAD>
<TITLE>Listas dependientes</TITLE>

<SCRIPT LANGUAGE="Javascript">
function envialista()
{
document.form1.submit();
}
</SCRIPT>
</HEAD>

<BODY>

<form name="form1" method="post" action="prueba.asp">

<select name="nivel" OnChange="envialista()">
<%
While (NOT Recordset2.EOF)
%>
<option
value="<%=(Recordset2.Fields.Item("cnivel").Value)%>"><%=(Recordset2.Fields.
Item("cnivel").Value)%></option>
<%
Recordset2.MoveNext()
Wend
If (Recordset2.CursorType > 0) Then
Recordset2.MoveFirst
Else
Recordset2.Requery
End If
%>
</select>

<select name="estudios">
<%
While (NOT Recordset1.EOF)
%>
<option
value="<%=(Recordset1.Fields.Item("ctitulo").Value)%>"><%=(Recordset1.Fields
.Item("ctitulo").Value)%></option>
<%
Recordset1.MoveNext()
Wend
If (Recordset1.CursorType > 0) Then
Recordset1.MoveFirst
Else
Recordset1.Requery
End If
%>
</select>
</form>
Respuesta Responder a este mensaje
#5 Hernan Nieto
28/11/2003 - 15:36 | Informe spam
Sashka:

Gracias a tu ayuda pude hacerlo funcionar, lo unico que me gustaria es que
el
Select nivel seleccione el nivel que el usuario eligio cuando se vuelve a
cargar la pagina, lo que hace ahora es seleccionar siempre la primera
opcion.

Te doy un ejemplo:

La tabla nivel tiene los niveles posibles de estudio:
BASICO,PRIMARIO,TERCIARIO,UNIVERISTARIO

La tabla estudios es filtrada solo los titulos que corresponden al nivel
seleccionado, todo funciona bien, solo que el select nivel siempre esta en
BASICO.

De nuevo gracias por tu ayuda.


****************codigo*************

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="../Connections/Recordset1.asp" -->

<%
Dim Recordset1__vcNivel
BASICO = request.form("nivel")
If (BASICO <> "") Then
Recordset1__vcNivel = BASICO
Else
Recordset1__vcNivel = "CICLO BÁSICO "
End If
%>

<%
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_Recordset1_STRING
Recordset1.Source = "{call dbo.sp_titulos('" + Replace(Recordset1__vcNivel,
"'", "''") + "')}"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

Recordset1_numRows = 0
%>
<%
Dim Recordset2
Dim Recordset2_numRows

Set Recordset2 = Server.CreateObject("ADODB.Recordset")
Recordset2.ActiveConnection = MM_Recordset1_STRING
Recordset2.Source = "{call dbo.sp_nivelestudio}"
Recordset2.CursorType = 0
Recordset2.CursorLocation = 2
Recordset2.LockType = 1
Recordset2.Open()

Recordset2_numRows = 0
%>

<HTML>
<HEAD>
<TITLE>Listas dependientes</TITLE>

<SCRIPT LANGUAGE="Javascript">
function envialista()
{
document.form1.submit();
}
</SCRIPT>
</HEAD>

<BODY>

<form name="form1" method="post" action="prueba.asp">

<select name="nivel" OnChange="envialista()">
<%
While (NOT Recordset2.EOF)
%>
<option
value="<%=(Recordset2.Fields.Item("cnivel").Value)%>"><%=(Recordset2.Fields.
Item("cnivel").Value)%></option>
<%
Recordset2.MoveNext()
Wend
If (Recordset2.CursorType > 0) Then
Recordset2.MoveFirst
Else
Recordset2.Requery
End If
%>
</select>

<select name="estudios">
<%
While (NOT Recordset1.EOF)
%>
<option
value="<%=(Recordset1.Fields.Item("ctitulo").Value)%>"><%=(Recordset1.Fields
.Item("ctitulo").Value)%></option>
<%
Recordset1.MoveNext()
Wend
If (Recordset1.CursorType > 0) Then
Recordset1.MoveFirst
Else
Recordset1.Requery
End If
%>
</select>
</form>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida