Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/12/2007, 10:40
Avatar de Shiryu_Libra
Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
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