Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/09/2004, 13:47
Hokodan
 
Fecha de Ingreso: octubre-2003
Ubicación: Dominican Republic
Mensajes: 25
Antigüedad: 21 años, 3 meses
Puntos: 0
Pregunta 3 Combos Dependientes

Hola a todos

Bueno esto es para tratar sobre uno de los temas relacionados con los Combos Dependientes o Listas Desplegables Dependientes.

El problema que tengo es con un codigo de 3 combos que fue posteado aqui por Lethe en fecha de 27-05-2003 voy a colocar el código y voy a marcar mi problema para ver si alguien ha utilizado este codigo me diga que tengo mal.


Código:
<script language = "JavaScript">

//-------------------------------------
//--Para Crear los Combos para Grupos y Sub-Grupos
//-------------------------------------
function Tupla(campo1,campo2)
{
	this.campo1 = campo1;
	this.campo2 = campo2;	
}

<%
'=======================================================

'---Vamos a crear nuestros arrays de "GRUPOS" desde ASP
'---El primer if detecta un cambio en el "INVENTARIO" para
'---crear un nuevo array en Javascript

'--------------------------------------
'			Query de Grupos
'--------------------------------------

Set Connect = CreateObject("ON_SRP_INV.grupos")
CondicionError
Set Recordset = Connect.GetRecords("1=1", "cod_inv, cod_grupo")

cuenta = 0
cat = "basura"

While Not Recordset.EOF

	If cat <> Recordset.Fields("cod_inv") then
		'--- Cambio de Inventario, empiezo a contar en 0 ---
		cuenta = 0
		cat = Recordset.Fields("cod_inv")

'========================================================
%>
	//Además tengo que crear un nuevo array para los Grupos
	var opciones<%=cat%> = new Array();

<%
'========================================================
	End If
'========================================================
%>

	opciones<%=cat%>[<%=cuenta%>]=new Tupla("<%=Recordset.Fields("nombre")%>","<%=Recordset.Fields("cod_grupo")%>");

<%
'========================================================

	cuenta = cuenta + 1
	Recordset.MoveNext
	
Wend

'========================================================

'--- Limpiamos Objetos ---
Recordset.Close
Set Recordset = Nothing
Set Connect = Nothing

'========================================================

'----------------------------------
'		Query de Sub Grupos
'----------------------------------

Set Connect = CreateObject("ON_SRP_INV.subgrupos")
CondicionError
Set Recordset = Connect.GetRecords("1=1", "cod_grupo, cod_subgrupo")

count = 0
cod = "basura"
			
While Not Recordset.EOF

	If cod <> Recordset.Fields("cod_grupo") then
		'--- Cambio de Grupos, empiezo a contar en 0 ---
		count = 0
		cod = Recordset.Fields("cod_grupo")

'========================================================
%>
		//Además tengo que crear un nuevo array para los SubGrupos
		var MatrizMetr<%=cod%> = new Array();
<%
'========================================================
	End If
'========================================================
%>

	MatrizMetr<%=cod%>[<%=count%>]=new Tupla("<%=Recordset.Fields("nombre")%>","<%=Recordset.Fields("cod_subgrupo")%>");
	
<%
'========================================================

	count = count + 1		
	Recordset.MoveNext
	
Wend

'========================================================

'--- Limpiamos Objetos ---
Recordset.Close
Set Recordset = Nothing
Set Connect = Nothing

'========================================================
%>

// Declaración de variable
var contador;

//--------------------------------------------------
// Función que compone dos (2) Listas Dependientes
//--------------------------------------------------
function ComponerLista(array) 
{
	// Limpia opciones del select
	BorrarLista();
	
	// Asigna bandera de cantidad de registro del sql proyecto (1=hay registros 0=no hay)
	cantReg = <%=noRecord%>
	
	// Verifica si hay registros del combo padre
	if (cantReg==0) {
	
		// Despliega el tag <Input> en campo Grupo y SubGrupo
		document.forms.buscar.txtgrupo.style.display = "";	
		document.forms.buscar.txtsubgrupo.style.display = "";		
		}
	else
		{
		// Despliega el tag <Select> en Campo Grupo y SubGrupo
		document.forms.buscar.codgrupo.style.display = "" ;		
		document.forms.buscar.codsubgrupo.style.display = "" ;	
		
		// Compone la lista dependiente a partir
		// del valor de la opcion escogida en la lista "padre"
		// Evalua el array "opciones" creado en tupla
		array = eval("opciones" + array);			
		for (contador = 0; contador < array.length; contador++) 
			{
			// Añade elementos al combobox correspondiente a Grupo
			var optionObj = new Option( array[contador].campo1, array[contador].campo1);
			buscar.codgrupo.options[contador] = optionObj;								
			} 
		
		// Asigna el Codigo de SubGrupo de la nueva opción seleccionada
		subgrupocod = document.forms.buscar.codsubgrupo.options[document.forms.buscar.codsubgrupo.selectedIndex].value;
		
		// Compone la lista dependiente a partir
		// del valor de la opcion escogida en la lista "padre"
		// Evalua el array "MatrizMetr" creado en tupla
		Metr = eval("MatrizMetr" + subgrupocod);		
		for (contador = 0; contador < Metr.length; contador++) 
		{
			// Añade elementos al combobox correspondiente a Sub Grupo
			var optionObj1 = new Option( Metr[contador].campo2, Metr[contador].campo2 );
			buscar.codsubgrupo.options[contador] = optionObj1;					
		} 				
		}					
} 


//-----------------------------------
// Función que limpia las opciones 
// de los combos dependientes
//-----------------------------------
function BorrarLista() 
{
	buscar.codgrupo.length = 0;
	buscar.codsubgrupo.length = 0;
}

//Inicializamos
ComponerLista (document.forms.buscar.codinventario.value);

-->
</script>

Lo que esta marcado en negritas es el problema que tengo, cuando cargo mi pagina me da un error de javascript que es el siguiente:

Object doesn't support this property or method

este error me sale desde un principio y el 3er combo no se me llena con lo seleccionado en el 2do combo.

Gracias de Antemano
__________________
Evil is what I am, Death is what i bring!!!!
-= Gouki =-