Foros del Web » Programando para Internet » ASP Clásico »

como hacer un list box a partir de otro

Estas en el tema de como hacer un list box a partir de otro en el foro de ASP Clásico en Foros del Web. hola tengo en un form dos list box uno de categoria y otro de subcategoria, lo que quiero es que cuando seleciono una categorya en ...
  #1 (permalink)  
Antiguo 11/12/2007, 09:02
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
como hacer un list box a partir de otro

hola
tengo en un form dos list box uno de categoria y otro de subcategoria, lo que quiero es que cuando seleciono una categorya en el listbox de la subcategory solo me salgan las subcateory de la categoria que selecione
yo tengo la idea pero no se como manipular el selected,
muestro el codigo:

<tr>
<td><strong>Category:</strong></td>
<td><select name="category" class="InputBoxText">
<%
strSQL = "SELECT idcategory,description FROM Category order by description"
Set rst = Conn.Execute(strSQL)
Do While Not rst.EOF
strSelected = "selected"
Response.Write "<option value="""&rst("idcategory")&""" "&strSelected&">"&rst("description")&"</option>"
rst.MoveNext
Loop
%>
</select></td> </tr>
<tr>
<td><strong>SubCategory:</strong></td>
<td><select name="subcategory" class="InputBoxText">
<%
strSQL = "SELECT idsubcategory,description FROM subCategory where idcategory="&rst("idcategory")&" order by description"
Set rst = Conn.Execute(strSQL)
Do While Not rst.EOF
'strSelected = ""
'If CInt(rst("")) = Cint() Then
' strSelected = "selected"
'End If
Response.Write "<option value="""&rst("idsubcategory")&""" "&strSelected&">"&rst("description")&"</option>"
rst.MoveNext
Loop
%>
</select></td></tr> <tr>

gracias
saludos
  #2 (permalink)  
Antiguo 11/12/2007, 09:25
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: como hacer un list box a partir de otro

vendria siendo con AJAX, para que te resulte de la mejor forma

deja busco un ejemplo y pego el codigo
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #3 (permalink)  
Antiguo 11/12/2007, 09:32
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

con ajax.....ups
  #4 (permalink)  
Antiguo 11/12/2007, 09:39
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

y con un jscript que en el momento de dar clic en un option se refresque la pagina y pueda tomar el idcategory y utilizarlo en el select del otro listbox?
digo se me ocurre pero de todos modos muestrame el ejemplo con ajax

gracias
saludo
  #5 (permalink)  
Antiguo 11/12/2007, 10:40
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: como hacer un list box a partir de otro

ok, aki vamos

primero el script de AJAX, recordemos que debe estar entre las etiquetas <HEAD>
debes cambiar la palabra "pagina.asp", por la que tu desees, ok?
Código PHP:
<script>
//NO MOVER ESTE CODIGO INFERIOR
function getHTTPObject() {
    var 
xmlhttp;
    
/*@cc_on
    @if (@_jscript_version >= 5)
       try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
          try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (E) { xmlhttp = false; }
       }
    @else
    xmlhttp = false;
    @end @*/
    
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
       try {
xmlhttp = new XMLHttpRequest();
       } catch (
e) { xmlhttp false; }
    }return 
xmlhttp;}

var 
enProceso false// lo usamos para ver si hay un proceso activo
var http getHTTPObject(); // Creamos el objeto XMLHttpRequest
//NO MOVER EL CODIGO SUPERIOR

//PROCESO QUE INVOCARA EL METODO DE AJAX
function Consultas(destino,valor) {
    if (!
enProceso && http) {
       var 
url "pagina.asp?destino=" destino "&value=" valor "&guia="Math.random();;
       
http.open("GET"urltrue);
       
http.onreadystatechange GetData;
       
enProceso true;
       
http.send(null);
    }
}

function 
GetData(){
    
//proceso completado
    
if (http.readyState == 4) {
        
//sin error, se mandan datos al select
       
if (http.status == 200) {
            
//todo perfecto, escribiendolos
          
if (http.responseText.indexOf('invalid') == -1) {
              
//separamos el control de los datos
              
results unescape(http.responseText.split("|"));
            
//en Results[0], estara el nombre del control que tendra los datos
            //en Results[1], se encontraran todos los valores
              
document.getElementById(results[0]).innerHTML results[1];
            
//Cerramos el proceso
              
enProceso false;}}
        
//en caso de error
        
else{ alert("Error en la recepcion de datos")
              
enProceso false;}}}
</script> 
despues, tenemos que realizar ciertos cambios en tu tabla, donde muestras tu codigo
Cita:
<tr>
<td><strong>Category:</strong></td>
<td><select id="category" name="category" class="InputBoxText" onchange="Consultas('subcategory',this.value)" ><%
strSQL = "SELECT idcategory,description FROM Category order by description"
Set rst = Conn.Execute(strSQL)
Do While Not rst.EOF
strSelected = "selected"
Response.Write "<option value="""&rst("idcategory")&""" "&strSelected&">"&rst("description")&"</option>"
rst.MoveNext
Loop%>
</select></td> </tr>
<tr>
<td><strong>SubCategory:</strong></td>
<td><select id="subcategory" name="subcategory" class="InputBoxText"></select></td></tr> <tr>
esas partes en rojo, se anexan para que AJAX, no tenga problemas a la hora de tomar los valores y/o incorporarles los que tendremos en la respuesta

ahora, el codigo de la pagina "pagina.asp"
Cita:
<%
'verifico que el querystring, no este vacio
if request.QueryString<>"" then
'tomo el valor del control, que contendra los datos
destino=request.QueryString("destino")

'tomo el valor de la categoria a buscar
categoria=request.QueryString("value")
'creo la consulta
strSQL = "SELECT idsubcategory,description "&_
"FROM subCategory where idcategory="&_
categoria&_
" order by description"
'ejecucion
Set rst = Conn.Execute(strSQL)
'inicializo respuesta en blanco
respuesta=""
'de aki hasta el ultimo dato de la subcategoria
Do While Not rst.EOF
'por primera ves, tomo el valor simple
if respuesta="" then
respuesta= "<option value="""&rst("idsubcategory")&""" "&strSelected&">"&rst("description")&"</option>"
'en segundas vueltas, le anexo todos los valores que llegue a encontrar
else
respuesta=respuesta & "<option value="""&rst("idsubcategory")&""" "&strSelected&">"&rst("description")&"</option>"
end if
'me muevo al siguiente registro
rst.MoveNext
Loop
'esta parte permitira al control de ajax separar mediante el simbolo "|";
'el control de los datos
'en pocas palabras, esta parte es la importante
response.Write destino & "|" & respuesta
end if
%>
intenta realizarlo, en algun momento deberas aprender a utilizarlo, no crees buen momento este para intentarlo?

bueno trata de incorporarlo, y si tienes problemas

postea
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra

Última edición por Shiryu_Libra; 11/12/2007 a las 10:47
  #6 (permalink)  
Antiguo 11/12/2007, 10:57
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

ok gracias, voy a implementarlo
  #7 (permalink)  
Antiguo 11/12/2007, 11:01
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

ok con calma. el primer script que me pusistes es en php?
debe ser en un archivo diferente a mi pagina asp ?
cuantas paginas debo utilizar y cuales son las estenciones?
  #8 (permalink)  
Antiguo 11/12/2007, 11:11
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: como hacer un list box a partir de otro

no te confundas nancy, se pone esa etiqueta, pero no quiere decir que sea PHP

la primera parte es un script de Javascript, el cual es el que se empleara para crear/manipular el AJAX

la segunda parte es el codigo que pusiste en tu primer post, solo con las modificaciones que se necesitarian para implementar este codigo

el tercer pedazo de codigo esta realizado en ASP, el cual puedes ponerlo con una pagina por separado; en el ejemplo se llama pagina.asp, pero puede cambiar ese nombre por alguno que tu desees; solo debes recordar cambiar el nombre de la pagina, en el primer pedazo de codigo

espero que lo puedas implementar sin problemas
si tienes mas dudas, postealas


__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #9 (permalink)  
Antiguo 11/12/2007, 11:29
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

si una pregunta mas
entonces para el select q esta en pagina.asp debo hacer un
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open CONNECTIONSTRING
una conecion a la bd o ella toma la de la pagina donde esta el select origen
  #10 (permalink)  
Antiguo 11/12/2007, 11:37
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: como hacer un list box a partir de otro

debes crearle tambien esa conexion, ya que esta no la trae incluida, ademas, por ser una consulta a una pagina externa no puede tomar el valor de esa conexion

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #11 (permalink)  
Antiguo 11/12/2007, 11:41
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

me sale el error "Error en la recepcion de datos"
no entiendo donde la pagina.asp es un includecomo funciona?
  #12 (permalink)  
Antiguo 11/12/2007, 11:56
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

sorry
pero ya puse mi conecion y verifique el codigo y ahora me manda un error de jscript
es el siguiente
document.getElementByld[...]' is null or not an object

me pregunto si la pagina donde esta el ajax esta recibiendo el recordset

bye
  #13 (permalink)  
Antiguo 11/12/2007, 12:12
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: como hacer un list box a partir de otro

el error es de recepcion de datos

verifica esta parte en el javascript
Cita:
results = unescape(http.responseText.split("|"));
si es necesario eliminar el unescape

y probemos nuevamente
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #14 (permalink)  
Antiguo 11/12/2007, 12:57
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

si elimino el unescape no me hace el refresh, osea como q el select destino no se ejecuta
no me manda error pero tampoco me sale el recordset destino
gracias
  #15 (permalink)  
Antiguo 11/12/2007, 13:16
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: como hacer un list box a partir de otro

debes entrar a la pagina nuevamente, si has modificado algo de codigo

verificando
el javascript, debe contener el simbolo que traera para dividir el mensaje, en este caso el "|", este simbolo permitira dividir la cadena de respuesta, separando el control de los valores y ponerlos como debe ser

Cita:
results=http.responseText.split("|");
en el codigo ASP, de la pagina externa, la respuesta debe y debera estar de la siguiente manera

Cita:
response.Write destino & "|" & respuesta

es importante este orden, ya que de el depende que se muestren perfectamente los datos


__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #16 (permalink)  
Antiguo 12/12/2007, 08:07
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

no me funciona, pero me pregunto la variable respuesta no deberia ser un array
bye
  #17 (permalink)  
Antiguo 12/12/2007, 08:10
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

y en el select destino no deberia ponerse una variable o identificador que me diga q se estan poniendo los option
  #18 (permalink)  
Antiguo 12/12/2007, 09:09
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: como hacer un list box a partir de otro



nancy, podrias poner el codigo que tu tienes puesto en tus dos paginas, para ver el posible error

y ahi mismo vemos donde poner la nota de informacion de que se esta ejecutando eso, te parece?
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #19 (permalink)  
Antiguo 12/12/2007, 09:55
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

ok...super,
mi prueba.asp
<!-- #include file ="../include/funciones.asp" -->

<%

Dim Conn
'ABRE CONEXION
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open CONNECTIONSTRING

'verifico que el querystring, no este vacio
if request.QueryString <>"" then
'tomo el valor del control, que contendra los datos
destino=request.QueryString("destino")

'tomo el valor de la categoria a buscar
categoria=request.QueryString("value")
'creo la consulta

strSQL = "SELECT idsubcategory,description FROM SUBCATEGORY where idcategory="&categoria&" "
'ejecucion
Set rst = Conn.Execute(strSQL)
'inicializo respuesta en blanco
respuesta=""
'de aki hasta el ultimo dato de la subcategoria
Do While Not rst.EOF
'por primera ves, tomo el valor simple
if respuesta="" then
respuesta= "<option value="""&rst("idsubcategory")&""" "&strSelected&">"&rst("description")&"</option>"
'en segundas vueltas, le anexo todos los valores que llegue a encontrar
else
respuesta="<option value="""&rst("idsubcategory")&""" "&strSelected&">"&rst("description")&"</option>"
end if
'me muevo al siguiente registro
rst.MoveNext
Loop
'esta parte permitira al control de ajax separar mediante el simbolo "|";
'el control de los datos
'en pocas palabras, esta parte es la importante
response.Write destino &"|"& respuesta
end if
%>

mi addproduct.asp

<!-- #include file ="../include/funciones.asp" -->
<%
'Dim fs, a, strRespuesta
Dim strNombreUsuario, strUsuarios
Dim Conn

'ABRE CONEXION
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open CONNECTIONSTRING

'VERIFICA EXISTENCIA DE SESION
Call ValidarSesion(TODOS)

strNombreUsuario = Session("NOMBRE")
respuesta=request.querystring("res")
%>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="include/style.css" type="text/css">
<script>
//NO MOVER ESTE CODIGO INFERIOR
function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) { xmlhttp = false; }
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {xmlhttp = new XMLHttpRequest();
} catch (e) { xmlhttp = false; }
}return xmlhttp;}

var enProceso = false; // lo usamos para ver si hay un proceso activo
var http = getHTTPObject(); // Creamos el objeto XMLHttpRequest
//NO MOVER EL CODIGO SUPERIOR

//PROCESO QUE INVOCARA EL METODO DE AJAX
function Consultas(destino,valor) {
if (!enProceso && http) {
var url = "prueba.asp?destino=" + destino + "&value=" + valor + "&guia="+ Math.random();;
http.open("GET", url, true);
http.onreadystatechange = GetData;
enProceso = true;
http.send(null);
}
}

function GetData(){
//proceso completado
if (http.readyState == 4) {
//sin error, se mandan datos al select
if (http.status == 200) {
//todo perfecto, escribiendolos
if (http.responseText.indexOf('invalid') == -1) {
//separamos el control de los datos
results = unescape(http.responseText.split("|"));
//results = http.responseText.split("|");
//en Results[0], estara el nombre del control que tendra los datos
//en Results[1], se encontraran todos los valores
document.getElementById(results[0]).innerHTML = results[1];
//Cerramos el proceso
enProceso = false;}}
//en caso de error
else{ alert("Error en la recepcion de datos")
enProceso = false;}}}
</script>

</head>
<body bgcolor="#ffffff" onLoad="" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" link="#000099" vlink="#000099" alink="#000099">

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

<table>
<tr>
<td colspan="2"> <div align="center"></div></td></tr>
<tr>
<td colspan="2"><hr align="center" width="100%" size="1" color="707e67"></td></tr>
<tr>
<td width="98"><strong>Descripci&oacute;n:</strong></td>
<td width="261"><div align="left"><input name="descripcion" type="text" class="InputBoxText" id="descripcion" size="75" maxlength="250"></div></td>
</tr>
<tr>
<td><strong>Category:</strong></td>
<td>
<select id="category" name="category" class="InputBoxText" onchange="Consultas('subcategory',this.value)" ><%
strSQL = "SELECT idcategory,description FROM Category order by description"
Set rst = Conn.Execute(strSQL)
Do While Not rst.EOF
strSelected = "selected"
Response.Write "<option value="""&rst("idcategory")&""" "&strSelected&">"&rst("description")&"</option>"
rst.MoveNext
Loop%>
</select>

</td>
</tr>
<tr>
<td><strong>SubCategory:</strong></td>
<td>

<select id="subcategory" name="subcategory" class="InputBoxText"></select>
</td></tr>
<tr>
<td><strong>Definition:</strong></td>
<td>
<textarea name="definition" cols="45" rows="3"></textarea></td>
</tr>
<tr>
<td colspan="2"><hr width="100%" size="1" color="707e67"></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="enviar" type="button" class="boton_enviar" id="enviar" value="enviar" onclick="if (validar_forma()) {form1.submit();}">
</div></td>
</tr>
</table>
</body>
</html>


saludos
  #20 (permalink)  
Antiguo 12/12/2007, 10:51
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: como hacer un list box a partir de otro

nancy

en la pagina que te recupera tus datos, en la externa, modifiquemos el codigo
sobreescribe lo que tienes por este, e intentalo de nuevo
Código HTML:
<%Dim Conn
'ABRE CONEXION
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open CONNECTIONSTRING

'verifico que el querystring, no este vacio
if request.QueryString <>"" then
    'tomo el valor del control, que contendra los datos
    destino=request.QueryString("destino")
    'tomo el valor de la categoria a buscar
    categoria=request.QueryString("value")
    'creo la consulta
    strSQL = "SELECT idsubcategory,description FROM SUBCATEGORY where idcategory="&categoria&" "
    'ejecucion
    Set rst = Conn.Execute(strSQL)
    'inicializo respuesta en blanco
    respuesta=""
    if Err=0 then
        if rst.EOF =false
            'de aki hasta el ultimo dato de la subcategoria
            Do While Not rst.EOF
                'por primera ves, tomo el valor simple
                if respuesta="" then
                    respuesta= "<option value="""&_
                        rst("idsubcategory")&""""&_
                        strSelected&">"&_
                        rst("description")&"</option>"
                'en segundas vueltas, le anexo todos los valores que llegue a encontrar
                else
                    respuesta = respuesta & "<option value=""" & rst("idsubcategory") & _
                        """ "&strSelected&">"&_
                        rst("description")&"</option>"
                end if
                'me muevo al siguiente registro
                rst.MoveNext
            Loop
            'esta parte permitira al control de ajax separar mediante el simbolo "|";
            'el control de los datos; en pocas palabras, esta parte es la importante
        else
            respuesta = "No hay SubCategorias"
        end if
    else
        respuesta = "Error Procesando Datos, contacte al WebMaster"
    end if
    response.Write destino &"|"& respuesta
end if%>
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #21 (permalink)  
Antiguo 12/12/2007, 11:17
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

no me funciona pero vi el error ""
estas variables estan no tienen nada osea no se esta pasando el valos del origen al destino
categoria=request.QueryString("value")
destino=request.QueryString("destino")
response.write destino
response.write request.QueryString
response.write categoria
response.end

gracias
  #22 (permalink)  
Antiguo 12/12/2007, 13:35
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

lo estoy intentando con jscript y estas mejor solo que en ves de pasar el idsubcategory lo que estoy pasando como parmetro es la descripcion y nececito pasar es idsubcategory
porfa ayuda
muestro el codigo
  #23 (permalink)  
Antiguo 12/12/2007, 13:41
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

addproduct.asp
<!-- #include file ="../include/funciones.asp" -->
<%
'Dim fs, a, strRespuesta
Dim strNombreUsuario, strUsuarios
Dim Conn

'ABRE CONEXION
Set rstcat = Server.CreateObject("ADODB.Recordset")
Set rstsubcat = Server.CreateObject("ADODB.Recordset")

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open CONNECTIONSTRING

'VERIFICA EXISTENCIA DE SESION
Call ValidarSesion(TODOS)

strNombreUsuario = Session("NOMBRE")
respuesta=request.querystring("res")
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body >
<form name="form1" method="post" action="hhhhh.asp">

<table border="0" cellpadding="1" cellspacing="1" class="text_tetrapak">
<tr>
<td colspan="2"> <div align="center"></div></td></tr>
<tr>
<td colspan="2"><hr align="center" width="100%" size="1" color="707e67"></td></tr>
<tr>
<td width="98"><strong>Descripción:</strong></td>
<td width="261"><div align="left"><input name="descripcion" type="text" class="InputBoxText" id="descripcion" size="75" maxlength="250"></div></td>
</tr>
<tr>
<td><strong>Category:</strong></td>
<td>

<select name="cboCC" id="cboCC" class="InputBoxText" onChange="Cambia()">
<%
strSQL = "SELECT idcategory,description FROM Category order by description"
Set rstcat = Conn.Execute(strSQL)
do while not rstcat.eof
response.write "<option value= ""&rstcat.Fields(0)&"" SELECTED >"&rstcat.Fields(1)&"</option>"
rstcat.MoveNext
Loop%>
</select>


</td>
</tr>
<tr>
<td><strong>SubCategory:</strong></td>
<td>




<select class="InputBoxText" name="cboSistema" id="cboSistema">
<%
strSQL = "SELECT idsubcategory,description FROM SUBCATEGORY "
Set rstsubcat = Conn.Execute(strSQL)
do while not rstsubcat.eof
response.write "<option value=""&rstsubcat.Fields(0)&"" selected>"&rstsubcat.Fields(1)&"</option>"
rstsubcat.MoveNext
Loop%>
</select>

</td></tr>
<tr>
<td><strong>Definition:</strong></td>
<td>
<textarea name="definition" cols="45" rows="3"></textarea></td>
</tr>
<tr>
<td colspan="2"><hr width="100%" size="1" color="707e67"></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="id" type="hidden" id="id" value="!ID!">
<input name="enviar" type="button" class="boton_enviar" id="enviar" value="enviar" onclick="if (validar_forma()) {form1.submit();}">
</div></td>
</tr>
</table>
</body>
</html>


<script LANGUAGE="javascript">
<!--

function Cambia()
{
LbCambio=true;
sToEval = "LlenaCC();";
document.body.style.cursor = "wait";
top.location.replace("paginasubcat.asp?txtCC=" + form1.cboCC.options(form1.cboCC.selectedIndex).tex t); return true;
}

//Llena el combo de Sistemas
function LlenaCC(sData)
{
var sData = new String(top.frames["BorraFrame"].Data.innerText)
LlenaCombo(frmRepGastosInt.cboSistema,true,sData);
document.body.style.cursor = "default";
return;
}

//Llena el combo enviado por paámetro
function LlenaCombo(oSelect, bEmptyFirst, sData)
{
var oElem, sElem, sText, sValue
if (bEmptyFirst)
{
while (oSelect.options.length > 0)
{
oSelect.options.remove(0);
}
}
while (sData != "")
{
sElem = sData.substring(0,((sData.indexOf("|",0) != -1) ? sData.indexOf("|",0) : sData.length ));
sValue = sElem.substring(0,sData.indexOf(";",0));
sText = sElem.substring(sData.indexOf(";",0)+1,sElem.lengt h);
sData = (sData.indexOf("|",0) == -1) ? "" : sData.substring(sData.indexOf("|",0)+1,sData.lengt h);
oElem = document.createElement("OPTION");
oElem.text = sText;
oElem.value= sValue;
oSelect.add(oElem);
}
return;
}


//-->
</script>


paginasubcat.asp

<!-- #include file ="../include/funciones.asp" -->
<%
'Recordsets
Dim rstsubcat
Dim lsSql,lsCC
lsCC=trim(Request.QueryString("txtCC"))
response.write lsCC
response.end
'Crea objetos de Base de Datos
'Set cmd = Server.CreateObject("ADODB.Command")
Set rstsubcat = Server.CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open CONNECTIONSTRING


'Establece tipo de comando
'cmd.CommandType=1
'Set cmd.ActiveConnection = Conn

strSQL = "SELECT idsubcategory,description FROM SUBCATEGORY where idcategory="&lsCC&""


'Ejecuta instrucción
rstsubcat.open lsSql, Conn

do while not rstsubcat.EOF
lnContador=lnContador + 1
LrsSistemas.MoveNext
loop

%>
<HTML>
<HEAD>
</HEAD>
<BODY>
<DIV ID="Data"><%
if lnContador >0 then
rstsubcat.MoveFirst
Do While Not rstsubcat.EOF
Response.Write rstsubcat.Fields("idsubcategory").Value & ";" & rstsubcat.Fields("idsubcategory").Value & " - " & rstsubcat.Fields("description").Value
LrsSistemas.MoveNext
If Not rstsubcat.EOF Then Response.Write "|"
Loop
rstsubcat.Close
Set rstsubcat= Nothing
else
Response.Write "Vacio"
end if
%></DIV>
<SCRIPT LANGUAGE=javascript>
<!--
top.LlenaCC()
//top.frames["Working"].<%=LsToEval%>();
//-->
</SCRIPT>


</BODY>
</HTML>

ayudenme
estoy pasando el campo description y quiero pasar el idcategory hago como
la linia del jscript q esta en rojo es donde paso los parametros
  #24 (permalink)  
Antiguo 13/12/2007, 22:44
Avatar de Maxon  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey NL
Mensajes: 263
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: como hacer un list box a partir de otro

Nancy...

Yo hice algo asi pero muy simple...

Tengo dos tablas... una con el campo ZONA y otra con dos campo ZONA y SUB-ZONA




- - - Esto lo pones hasta arriba de la pagina - - - - es para que al seleccionar del menu desplegable solo se valla a la otra lista



<script language="JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>


<%
zon = request.querystring ("zon")
%>


- - - - - - - ESTAS SON LAS CONSULTAS - - - - - -


SQL=" SELECT * FROM zona order by zona"
SQLa=" SELECT * FROM subzona where zona= '"&zon&"' or zona = 'seleccione' order by subzona"






- - - - - - - Luego este es el menu desplegable - - - - - -


<%
If zon = "" Then
Response.Write " <select class = ""search"" name=""menu1"" onChange=""MM_jumpMenu('parent',this,0)""> "
Do While not RS.eof
Response.Write "<option value='agregarraiz.asp?zon="&rs("zona")&"'>"&RS("z ona")&"</option>"
RS.movenext
Loop
Response.Write "</select>"
Else
Response.write zon
END IF
%>





- - - - - Y este es el segundo menu desplegable - - - - -


<%
If zon = "" Then
Response.Write " <select name=""subzona""> "
Response.Write "<option>"
Response.Write "</select>"
Else
Response.Write " <select name=""subzona""> "
Do While not RSa.eof
Response.Write "<option>" & RSa("subzona")
RSa.movenext
Loop
Response.Write "</select>"
End If
%>
  #25 (permalink)  
Antiguo 14/12/2007, 08:19
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

Gracias Maxon,
si me funciona... ya me habia dado pena preguntar despues del regaño

aprovechando

Aprovechando
Me gustaría guardar el url de mi página actual para guardarla en una variable, creo que hay un método para esto pero no me acuerdo. El motivo por el cual quiero hacer esto es lo siguiente: tengo un formulario de búsqueda, cuando me sale el resultado me aparecen los productos y tengo la opción de editar e eliminar, al hacer cualquiera de las dos acciones quiero regresar al mismo resultado que tenia pero no me sale porque pierdo los parámetros que había pasado del formulario de búsqueda.
Así que mi idea era de guardar mi url que tiene los parámetros en una variable y luego hacer un redirect con la variable .
Saludos y muchas gracias
  #26 (permalink)  
Antiguo 14/12/2007, 09:52
Avatar de Maxon  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey NL
Mensajes: 263
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: como hacer un list box a partir de otro

Tienes qie pasar los datos con Query.String.... asi es como los puedes pasar...

EJEMPLO

mipagina.asp?var1=valor1&var2=valor2&var3=valor3.. . y asi los que quieras

Y en mipagina.asp... en la parte de arribe recoges las variables

var1= request.querystring ("var1")
var2= request.querystring ("var2")
var3= request.querystring ("var3")


Saludos
  #27 (permalink)  
Antiguo 14/12/2007, 11:11
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: como hacer un list box a partir de otro

lo mismo que te dice maxon, mas simplificado

obtendra la pagina
Cita:
pagina=request.ServerVariables("SCRIPT_NAME")
obtendras todos los parametros
Cita:
parametros=request.QueryString
para volver a ejecutarla, le agregas el signo de interrogacion "?"
Cita:
response.redirect pagina & "?" & parametros
si necesitas enviar mas parametros
Cita:
response.redirect pagina & "?" & parametros & "&extra1=" & extra1 & "&extra2=" & extra2



__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #28 (permalink)  
Antiguo 18/12/2007, 09:33
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: como hacer un list box a partir de otro

OK, BIEN
pero los parametros q recibo son de un form ... hay se complica el asunto
porque tendria que mandar los parametros desde el link y hacer entoces una validacion que si es request.querystring o o request.form me explico?

pense que bueno como lo que no quiero es perder los parametros de la buzqueda entonce hacer un window.open
<td><div align="center"><input type=image src=../images/ELIMINAR.gif name="add" value="add" onclick="if (confirm('Esta seguro que desea eliminar este producto?')){window.open('deleteproduct.asp?id=<%= rst("idproduct")%>','gg','menubar=no, toolbar=si,height=400, width=400,scrollbars=yes')}"> </div></td>

y esta bien por que abre la ventanita se elimnina el producto y la cierro pero no se me refrescan los datos en la pagina donde tengo el resultado de la busqueda

entonces pregunto hay algun codigo jscript o vbscript que le haga un refresh
a la pagina en el momento de cerrar la ventana.
o que me sugieren

gracias
  #29 (permalink)  
Antiguo 18/12/2007, 09:56
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: como hacer un list box a partir de otro

Cita:
Iniciado por nancy8120 Ver Mensaje
OK, BIEN
pero los parametros q recibo son de un form ... hay se complica el asunto
porque tendria que mandar los parametros desde el link y hacer entoces una validacion que si es request.querystring o o request.form me explico?
para evitar tu complicacion

recepcion de datos, tanto POST o GET, por el Merodeador U_goldman


esta y mas funciones similares estan en la Biblioteca de Clases,Funciones y Sub-rutinas.

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
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 00:49.