Combobox enlazados con asp


http://www.asptutor.com

Combobox enlazados con asp y javascript

Colaboración enviada por xxxxx----i_e_s27@hotmail. com-----xxxxx

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Response.Buffer = True%>
<html>
<head>
<title>Combo Dependiente</title>
<%
Const adOpenForwardOnly = 0 'Es el cursor por defecto y nos permite recorrer el Recordset en forma secuencial.
Const adOpenKeySet = 1 'Permite movernos hacia delante y atrás. Permite observar las modificaciones en los datos del Recordset , '
no así si existen ingresos de nuevos registros.
Const adOpenDynamic = 2 'Permite movernos en cualquier sentido, viendo cualquier modificación, ingreso o eliminación de datos del Recordset.
Const adOpenStatic = 3 'Permite movernos en cualquier sentido, pero no se verá ningún cambio ocurrido en la tabla.

Const adLockReadOnly = 1 'Es el cerrojo por defecto y no permite modificar los registros de la tabla.
Const adLockPessimistic = 2 'Una vez que alguien abre la tabla, ésta queda bloqueada para los demás usuarios.'
 Con este modo se asegura la integridad de los datos.
Const adLockOptimistic = 3 'La tabla sólo será bloqueada a los demás usuarios mientras se ejecute una operación Update. 
'De esta forma la tabla se bloqueará durante mucho menos tiempo que con el método anterior.
Const adBatchOptimistic = 4 'Los registros serán actualizados en modo batch. 

Dim adoCon
Set adoCon = Server.CreateObject ("ADODB.Connection")
adoCon.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("/MISITIO/dbgeneral.mdb")

Set rsComboCategoria = Server.CreateObject("ADODB.Recordset")
Set rsComboSubcategoria = Server.CreateObject("ADODB.Recordset")
strSQLComboCategoria = "SELECT * FROM tblcategorias"
strSQLComboSubcategoria = "SELECT * FROM tblsubcategorias"
rsComboCategoria.Open strSQLComboCategoria, adoCon, adOpenStatic, adLockOptimistic
rsComboSubcategoria.Open strSQLComboSubcategoria, adoCon, adOpenStatic, adLockOptimistic
%>

<script language = "JavaScript">
function RellenarCombo(ComboPadre, ComboDependiente) {

IDItemSeleccionado = ComboPadre.options[ComboPadre.selectedIndex].value

ComboDependiente.length = 0

IDsSubcategorias = new Array();
IDsSubcategorias = [<%
EsPrimero = True
rsComboSubcategoria.MoveFirst
For x = 1 to rsComboSubcategoria.RecordCount
If EsPrimero = False Then Response.Write(",")
Response.Write("'" & rsComboSubcategoria("id") & "'")
rsComboSubcategoria.MoveNext
EsPrimero = False
Next 'x
Response.Write("];")
%>

NombresSubcategorias = new Array();
NombresSubcategorias = [<%
EsPrimero = True
rsComboSubcategoria.MoveFirst
For x = 1 to rsComboSubcategoria.RecordCount
If EsPrimero = False Then Response.Write(",")
Response.Write("'" & rsComboSubcategoria("nombre_subcategoria") & "'")
rsComboSubcategoria.MoveNext
EsPrimero = False
Next 'x
Response.Write("];")
%>

AsociacionSubcategorias = new Array();
AsociacionSubcategorias = [<%
EsPrimero = True
rsComboSubcategoria.MoveFirst
For x = 1 to rsComboSubcategoria.RecordCount
If EsPrimero = False Then Response.Write(",")
Response.Write("'" & rsComboSubcategoria("categoria_asociada") & "'")
rsComboSubcategoria.MoveNext
EsPrimero = False
Next 'x
Response.Write("];")
%>

var Opcion = new Option();
var i;
for (i in IDsSubcategorias) {
if (AsociacionSubcategorias[i] == IDItemSeleccionado) {
Opcion = Option(NombresSubcategorias[i], IDsSubcategorias[i]);
ComboDependiente.options[ComboDependiente.length]=Opcion;
}
}
}
</script>

</head>

<body onLoad="RellenarCombo(document.forms['AgregarProducto'].categoria, document.forms['AgregarProducto'].subcategoria);">

<form id="AgregarProducto" name="AgregarProducto" method="post" action="">
<label for="categoria">Categoria:</label>
<select name="categoria" id="categoria" onChange="RellenarCombo(document.forms['AgregarProducto'].categoria, document.forms['AgregarProducto'].subcategoria);">
<%
rsComboCategoria.MoveFirst
For i = 1 to rsComboCategoria.RecordCount
Response.Write(" <option value=""" & rsComboCategoria("id") & """>" & rsComboCategoria("nombre_categoria") & "</option>")
Response.Write(VbCrLf)
rsComboCategoria.MoveNext
Next 'i
%>
</select>
<label for="subcategoria">Subcategoria:</label>
<select name="subcategoria" id="subcategoria"></select>
<input type="submit" value="Ir" />
</form>

</body>

</html>