Retroceder   Foros del Web > Programación para sitios web > ASP

Respuesta
 
Herramientas Desplegado
Antiguo 26-mar-2008, 17:37   #1 (permalink)
flaviovich está en el buen camino
 
Avatar de flaviovich
 
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 1.128
Enviar un mensaje por ICQ a flaviovich Enviar un mensaje por MSN a flaviovich Enviar un mensaje por Skype™ a flaviovich
Pregunta Problema con combos anidados

Amigos, necesito de vuestra ayuda.
Tengo un formulario, en el tengo 2 combos enlazados, el script de estos combos es generado en ASP:
Código HTML:
<script type="text/javascript">
function addOpt(oCntrl, iPos, sTxt, sVal)
{ 
  var selOpcion=new Option(sTxt, sVal); 
  oCntrl.options[iPos]=selOpcion;
}

function CambiaModelo(oCntrl)
{
  oCntrl.length=0
  switch (document.getElementById("marca").selectedIndex)
  {
  <%
    dim rs_marca, rs_modelo
    i = 0
    Set rs_marca = SQLQuery(cnnDB, "SELECT * FROM marcas ORDER BY cod_marca ASC")
    If Not rs_marca.EOF Then
    Do While Not rs_marca.EOF
  %>
    case <% = rs_marca("cod_marca") %>:
    <%
      dim detModelos
      j = 1
      Set rs_modelo = SQLQuery(cnnDB, "SELECT * FROM marca_modelos WHERE cod_marca=" & rs_marca("cod_marca") & " ORDER BY dsc_modelo ASC")
      If Not rs_modelo.EOF Then
      detModelos="addOpt(oCntrl, " & 0 & ", 'Seleccione un modelo', 0);" & vbCR
      Do While Not rs_modelo.EOF
        detModelos=detModelos & "addOpt(oCntrl, " & j & ", '" & rs_modelo("dsc_modelo") & "', " & rs_modelo("cod_modelo") & ");" & vbCR
        j = j + 1
        rs_modelo.MoveNext
      Loop
      Response.Write detModelos
      End If
    %>
      break; 
  <%
    i = i + 1
    rs_marca.MoveNext
    Loop
    End If
  %>
  } 
}
Cuando se presiona grabar los datos del formulario, estos se validan en ASP asi:
Código PHP:
If Len(uid)=0 Then
    Call DisplayError
(1lang(cnnDB"ClientName"))
End if 
DisplayError tiene:
Código PHP:
' DisplayError:
Procedure for creating error pages.
Sub DisplayError(eTypecomponent)

    
' Create the web page
  If Not Application("Debug") Then
    Response.Clear
    Response.Write("<html><head><title>ERROR</title></head><body>")
  End If
  Response.Write "<p><center><table width=""200""><tr><td bgcolor=""red"" align=""center"">" & _
      "<b>ERROR</b></tr></td><tr><td bgcolor=""#eeeeee"" align=""center"">"

'    
Error Types:
'    1: Missing required field
'    
2SQL error
'    3: Generic Error, just display full component string

    Select Case eType
    Case 1
        Response.Write "<b>" & component & "</b> " & _
          "&nbsp;" & lang(cnnDB, "isarequiredfield") & ".<p>" & _
          "<i>" & lang(cnnDB, "PleasepresstheBACKbutton") & "</i></p>"
    Case 2
        Response.Write(lang(cnnDB, "ASQLqueryhasfailed") & ". ")
    Case 3
        Response.Write(component)
    End Select


    ' 
Finish off the table and page
    Response
.Write("</tr></td></table></center><p>&nbsp;</p></body></html>")

     
Stop processing the .asp file
    Response
.End()
End Sub 
Si se ejecuta este procedimiento se pasa a una pantalla donde aparece un mensaje:
Código:
ERROR 
Nombre del cliente  es un campo requerido.
Por favor presione el boton RETROCEDER
El problema viene aqui al retroceder se pierde el item seleccionado en el segundo combo.
Me hablaron de usar Session, pero no entiendo como recuperarlo al retroceder.
Ojala alguien pueda ayudarme.
Gracias
__________________
Если можешь читать это, то напиши мне..
No repitamos temas, usemos el Motor de busquedas
flaviovich está desconectado   Responder Citando
Antiguo 27-mar-2008, 07:15   #2 (permalink)
GaboMaKano está en el buen camino
 
Avatar de GaboMaKano
 
Fecha de Ingreso: noviembre-2002
Ubicación: Viña del Mar - Chile
Mensajes: 316
Re: Problema con combos anidados

si quieres usar sesiones lo haces asi, a una variable por ejemplo

session("GuardaItem") = item <-- el item que quieres mantener.

en la pagina donde quieras recuperarlo:

item= session("GuardaItem")

esop
__________________
Exito!!
:censura:
Visita Uganet.cl
GaboMaKano está desconectado   Responder Citando
Antiguo 27-mar-2008, 07:53   #3 (permalink)
flaviovich está en el buen camino
 
Avatar de flaviovich
 
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 1.128
Enviar un mensaje por ICQ a flaviovich Enviar un mensaje por MSN a flaviovich Enviar un mensaje por Skype™ a flaviovich
Sonrisa Re: Problema con combos anidados

Hola!
Gracias por tu respuesta. Mi duda es, en que momento uso ese codigo de recuperación? Es decir, esa linea se debe ejecutar al momento de regresar (retroceder) a la pagina inicial.
__________________
Если можешь читать это, то напиши мне..
No repitamos temas, usemos el Motor de busquedas
flaviovich está desconectado   Responder Citando
Antiguo 27-mar-2008, 12:12   #4 (permalink)
GaboMaKano está en el buen camino
 
Avatar de GaboMaKano
 
Fecha de Ingreso: noviembre-2002
Ubicación: Viña del Mar - Chile
Mensajes: 316
Re: Problema con combos anidados

Cita:
Iniciado por flaviovich Ver Mensaje
Hola!
Gracias por tu respuesta. Mi duda es, en que momento uso ese codigo de recuperación? Es decir, esa linea se debe ejecutar al momento de regresar (retroceder) a la pagina inicial.
ahi decides tu, en que momento la llamas, por lo que dices seria en la pagina donde vuelves preguntar si el item esta vacio cargas el valor de la session, es una idea...
exito
__________________
Exito!!
:censura:
Visita Uganet.cl
GaboMaKano está desconectado   Responder Citando
Antiguo 28-mar-2008, 17:25   #5 (permalink)
flaviovich está en el buen camino
 
Avatar de flaviovich
 
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 1.128
Enviar un mensaje por ICQ a flaviovich Enviar un mensaje por MSN a flaviovich Enviar un mensaje por Skype™ a flaviovich
Re: Problema con combos anidados

He probado asi:
Código PHP:
<%if modelo="" then
        modelo 
session("old_modelo")
else
        
session("old_modelo") = modelo
end 
if%> 
pero no funciona.
Disculpen pero yo no uso mucho ASP.
Por que al retroceder el segundo combo queda asi?

Me he dado cuenta que esto solo sucede en IE.
Por favor, como puedo corregir esto?
__________________
Если можешь читать это, то напиши мне..
No repitamos temas, usemos el Motor de busquedas
flaviovich está desconectado   Responder Citando
Antiguo 28-mar-2008, 20:25   #6 (permalink)
RucarMaN está en el buen camino
 
Avatar de RucarMaN
 
Fecha de Ingreso: julio-2003
Ubicación: Caripito Edo Monagas
Mensajes: 113
Enviar un mensaje por Yahoo  a RucarMaN
Re: Problema con combos anidados

<head>
<script language = "JavaScript">

<%Dim x, count, y

SQL = "SELECT IdModelo, NombreModelo, IdMarca FROM Modelos"
CrearRs(objRS)
x=0
%>

// FUNCION DE COMBO BOX COMBINADO

function sublist(inform, selecteditem)
{
inform.subcatagory.length = 0

<%
count= 0
y=0
Do While Not rs.EOF
%>

x = <%= trim(y) %>;

subcat = new Array();
subcatagorys = "<%=(rs("NombreModelo"))%>";
subcatagoryof = "<%=(rs("IdMarca"))%>";
subcatagoryid = "<%=(rs("NombreModelo"))%>";
subcat[x,0] = subcatagorys;
subcat[x,1] = subcatagoryof;
subcat[x,2] = subcatagoryid;
if (subcat[x,1] == selecteditem) {
var option<%= trim(count) %> = new Option(subcat[x,0], subcat[x,2]);
inform.subcatagory.options[inform.subcatagory.length]=option<%= trim(count)%>;
}
<%
count = count + 1
y = y + 1
rs.MoveNext
Loop
rs.Close()
Set rs = Nothing
%>
}
</script>
</head>
-----------------------
<form>
<select size="1" id="cat" name="MarcaVehiculo" onChange = "javascript:sublist(this.form, cat.value);" tabindex="6">

<option selected value="0">Seleccione</option>
<%
SQL = "SELECT IdMarca, NombreMarca FROM Marcas"
CrearRS(objRS)
Do While Not rs.EOF%>
<option value="<%=rs("NombreMarca")%>"><%=rs("NombreMarca" )%></option>
<%rs.MoveNext
Loop
rs.Close()
Set rs = Nothing
%>
</select>
<select id="subcatagory" name="ModeloVehiculo" size="1" tabindex="7">
<option value="0">--------------------</option>
</select>
</form>

espero que te sirva....
__________________
Con la ayuda de todos seremos mejores...
RucarMaN está desconectado   Responder Citando
Antiguo 31-mar-2008, 09:52   #7 (permalink)
flaviovich está en el buen camino
 
Avatar de flaviovich
 
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 1.128
Enviar un mensaje por ICQ a flaviovich Enviar un mensaje por MSN a flaviovich Enviar un mensaje por Skype™ a flaviovich
Re: Problema con combos anidados

Gracias por contestar.
Adapte tu codigo, y me quedo asi:
Código HTML:
<head>
<script language = "JavaScript">

<!-- 	#include file = "public.asp" -->
<% 
Dim x, count, y, cnnDB
Set cnnDB = CreateCon

qry = "SELECT * FROM marca_modelos"
Set rs = SQLQuery(cnnDB,qry)
x=0
%>

// FUNCION DE COMBO BOX COMBINADO

function sublist(inform, selecteditem)
{
inform.subcatagory.length = 0

<%
count= 0
y=0
Do While Not rs.EOF
%>

x = <%= trim(y) %>;

subcat = new Array();
subcatagorys = "<%=(rs("dsc_modelo"))%>";
subcatagoryof = "<%=(rs("cod_marca"))%>";
subcatagoryid = "<%=(rs("cod_modelo"))%>";
subcat[x,0] = subcatagorys;
subcat[x,1] = subcatagoryof;
subcat[x,2] = subcatagoryid;
if (subcat[x,1] == selecteditem) {
var option<%= trim(count) %> = new Option(subcat[x,0], subcat[x,2]);
inform.subcatagory.options[inform.subcatagory.length]=option<%= trim(count)%>;
}
<%
count = count + 1
y = y + 1
rs.MoveNext
Loop
rs.Close()
Set rs = Nothing
%>
}
</script>
</head>
<%
blnSubmitNew = iif(Cint(Request.Form("save")) = 1, True, False)
If blnSubmitNew Then
    Call DisplayError(1, lang(cnnDB, "ClientName"))
end if
%>
<form action="t.asp" method="post">
<input type="hidden" id="save" name="save" value="0" />
<select size="1" id="cat" name="MarcaVehiculo" onChange = "javascript:sublist(this.form, cat.value);" tabindex="6">

<option selected value="0">Seleccione</option>
<%
qry = "SELECT * FROM marcas"
Set rs = SQLQuery(cnnDB,qry)
Do While Not rs.EOF%>
<option value="<%=rs("cod_marca")%>"><%=rs("dsc_marca" )%></option>
<%rs.MoveNext
Loop
rs.Close()
Set rs = Nothing
%>
</select>
<select id="subcatagory" name="ModeloVehiculo" size="1" tabindex="7">
<option value="0">--------------------</option>
</select>
<br />
<br />
<input type="submit" value="Sgte pag" name="B1" onclick="document.getElementById('save').value='1'; return checksubmit(this)" />&nbsp;
</form>
pero el problema persiste.
Pf verifica este codigo, y dime que esta mal.
__________________
Если можешь читать это, то напиши мне..
No repitamos temas, usemos el Motor de busquedas
flaviovich está desconectado   Responder Citando
Antiguo 31-mar-2008, 11:07   #8 (permalink)
RucarMaN está en el buen camino
 
Avatar de RucarMaN
 
Fecha de Ingreso: julio-2003
Ubicación: Caripito Edo Monagas
Mensajes: 113
Enviar un mensaje por Yahoo  a RucarMaN
Re: Problema con combos anidados

A mi me funciona bien....
verifica la base de dato

Marca
* IdMarca -
NombreMarca

Modelo
* IdModelo
IdMarca -
NombreModelo
__________________
Con la ayuda de todos seremos mejores...
RucarMaN está desconectado   Responder Citando
Antiguo 31-mar-2008, 11:41   #9 (permalink)
flaviovich está en el buen camino
 
Avatar de flaviovich
 
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 1.128
Enviar un mensaje por ICQ a flaviovich Enviar un mensaje por MSN a flaviovich Enviar un mensaje por Skype™ a flaviovich
Re: Problema con combos anidados

Amigazo, el problema es cuando presiono el boton "sgte pag". Este muestra un mensajito en una siguiente pantalla. Entonces tengo que retroceder y ahi es donde no aparece la lista del segundo combo.
Se entiende el problema?
__________________
Если можешь читать это, то напиши мне..
No repitamos temas, usemos el Motor de busquedas
flaviovich está desconectado   Responder Citando
Antiguo 31-mar-2008, 12:01   #10 (permalink)
Colaborador
JuanRAPerez tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 1.668
Re: Problema con combos anidados

dos cosas:

uno:
Si los errores que te dara son por campos requeridos (así como dice tu ejemplo) lo que te recomiendo es que busques una función para validar el formulario, y fuerzas al usuario a ingresar todos los "campos requeridos" desde el inicio antes de procesar el formulario, asi te evitas este error cierto?

Dos:
basados en las sessiones no se si te funcionara pero la idea seria

en tu pagina donde recibes creas las sessiones de el item que deseas que te respete los combo

session("Combo1") = item1
session("Combo2") = item2

luego en la pagina de el formulario tendrías que validar

if session("Combo2") <> "" then
'nunca ha procesado el formulario
else
aqui imprimes el combo dependiente y pones selected al registro que coincida con el item2
end if


p.d. ando pensando en vos alta.


suerte
__________________
Juan Ramón Pérez
San Salvador, El Salvador
JuanRAPerez esta en línea ahora   Responder Citando
Antiguo 31-mar-2008, 17:44   #11 (permalink)
flaviovich está en el buen camino
 
Avatar de flaviovich
 
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 1.128
Enviar un mensaje por ICQ a flaviovich Enviar un mensaje por MSN a flaviovich Enviar un mensaje por Skype™ a flaviovich
Re: Problema con combos anidados

El problema es que todo se hace en la misma pagina. Si tienes deseo de ayudarme con este problema puedo enviarte el ASP, solo dejame tu correo.
Si habia pensado en el punto uno que mencionas, pero queria evitarme cambiar todo el codigo de validacion.
__________________
Если можешь читать это, то напиши мне..
No repitamos temas, usemos el Motor de busquedas
flaviovich está desconectado   Responder Citando
Antiguo 01-abr-2008, 04:58   #12 (permalink)
i_e_s27 tiene algunos puntos positivos de karma
 
Avatar de i_e_s27
 
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 195
Alegría Re: Problema con combos anidados

Mira, yo justo tambien estoy trabajando con combos anidados, o combos dependientes, como quieras decirle, asi que aprobecho para mostrarte el codigo que tengo yo, quizas te pueda servir...
Solo tengo un pequeño inconveniente con el que estoy... yo no se programar en JavaScript, y no se como llamar en el "body onload" a mi funcion que llena el combo anidado o dependiente...

Este es el codigo en ASP:

Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Response.Buffer = True%>
<HTML>
<HEAD><TITLE>Combo Dependiente</TITLE></HEAD>
<body>
<%

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 rsCombo1 = Server.CreateObject("ADODB.Recordset")
Set rsCombo2 = Server.CreateObject("ADODB.Recordset")
strSQLCombo1 = "SELECT * FROM tblcategorias"
strSQLCombo2 = "SELECT * FROM tblsubcategorias"
rsCombo1.Open strSQLCombo1, adoCon, adOpenStatic, adLockOptimistic
rsCombo2.Open strSQLCombo2, adoCon, adOpenStatic, adLockOptimistic

%>
<script language="javascript">
function Combos(x) {
  ItDepend=document.getElementById('CombDependiente');
  if(!ItDepend){return;}                 
  var mitems=new Array();
  mitems['Categoria']=['Subcategoria'];
<%
For i = 1 to rsCombo1.RecordCount
	Response.Write("  mitems['" & rsCombo1("nombre_categoria") & "']=[")
	rsCombo2.MoveFirst
	NoSeEncontroRegistro = True
	EsPrimero = True
	For x = 1 to rsCombo2.RecordCount
		If rsCombo2("categoria_asociada") = rsCombo1("id") Then
			NoSeEncontroRegistro = False
			If EsPrimero = False Then Response.Write(",")
			Response.Write("'" & rsCombo2("nombre_subcategoria") & "'")
			EsPrimero = False
		End If
		rsCombo2.MoveNext
	Next 'x
	If NoSeEncontroRegistro = True Then Response.Write("''")
	Response.Write("];")
	rsCombo1.MoveNext
	Response.Write(VbCrLf)
Next 'i
%>
  ItDepend.options.length=0;
  ItActual=mitems[x.options[x.selectedIndex].value];
  if(!ItActual){return;}
  ItDepend.options.length=ItActual.length;
  for(var i=0;i<ItActual.length;i++) {
    ItDepend.options[i].text=ItActual[i];
    ItDepend.options[i].value=ItActual[i];
  }
}
</script>

<form id="AgregarProducto" name="AgregarProducto" method="post" action="">
<label for="or">Categoria:</label>
<select name="or" id="or" onChange="Combos(this)">
<%
rsCombo1.MoveFirst
For i = 1 to rsCombo1.RecordCount
	Response.Write("  <option value=""" & rsCombo1("nombre_categoria") & """>" & rsCombo1("nombre_categoria") & "</option>")
	Response.Write(VbCrLf)
	rsCombo1.MoveNext
Next 'i
%>
</select>
<label for="CombDependiente">Subcategoria:</label>
<select name="CombDependiente" id="CombDependiente"></select>
<input type="submit" value="Ir" />
</form>

</body>
</html>

Y este es el codigo HTML que genera, apreciar que es un codigo muy limpio y ordenado:

Código HTML:
<HTML>
<HEAD><TITLE>Combo Dependiente</TITLE></HEAD>
<body>

<script language="javascript">
function Combos(x) {
  ItDepend=document.getElementById('CombDependiente');
  if(!ItDepend){return;}                 
  var mitems=new Array();
  mitems['Categoria']=['Subcategoria'];
  mitems['Cartuchos y Toners']=['HP','Lexmark','Canon'];
  mitems['Discos Ríg y Remov']=[''];
  mitems['Grab/Lect de CD y DVD']=[''];
  mitems['Memorias']=[''];
  mitems['Pen Drives']=[''];
  mitems['Placas de Sonido']=[''];
  mitems['Procesadores']=['AMD','Intel'];
  mitems['Scanners']=[''];
  mitems['Software y Programas']=[''];
  mitems['Alimentación']=[''];
  mitems['CDs y DVDs Vírg']=[''];
  mitems['Discos Rígidos']=[''];
  mitems['Gabinetes y Accesorios']=[''];
  mitems['Libros y Manuales']=[''];
  mitems['Modems']=[''];
  mitems['Motherboards']=[''];
  mitems['Notebooks']=['Toshiba'];
  mitems['Papeles y Resmas']=[''];
  mitems['Perif y Accesorios']=[''];
  mitems['Placas de Video y Editora']=['Nvidia','ATI'];
  mitems['Impresoras']=[''];

  ItDepend.options.length=0;
  ItActual=mitems[x.options[x.selectedIndex].value];
  if(!ItActual){return;}
  ItDepend.options.length=ItActual.length;
  for(var i=0;i<ItActual.length;i++) {
    ItDepend.options[i].text=ItActual[i];
    ItDepend.options[i].value=ItActual[i];
  }
}
</script>

<form id="AgregarProducto" name="AgregarProducto" method="post" action="">
<label for="or">Categoria:</label>
<select name="or" id="or" onChange="Combos(this)">
  <option value="Cartuchos y Toners">Cartuchos y Toners</option>
  <option value="Discos Ríg y Remov">Discos Ríg y Remov</option>
  <option value="Grab/Lect de CD y DVD">Grab/Lect de CD y DVD</option>
  <option value="Memorias">Memorias</option>
  <option value="Pen Drives">Pen Drives</option>
  <option value="Placas de Sonido">Placas de Sonido</option>
  <option value="Procesadores">Procesadores</option>
  <option value="Scanners">Scanners</option>
  <option value="Software y Programas">Software y Programas</option>
  <option value="Alimentación">Alimentación</option>
  <option value="CDs y DVDs Vírg">CDs y DVDs Vírg</option>
  <option value="Discos Rígidos">Discos Rígidos</option>
  <option value="Gabinetes y Accesorios">Gabinetes y Accesorios</option>
  <option value="Libros y Manuales">Libros y Manuales</option>
  <option value="Modems">Modems</option>
  <option value="Motherboards">Motherboards</option>
  <option value="Notebooks">Notebooks</option>
  <option value="Papeles y Resmas">Papeles y Resmas</option>
  <option value="Perif y Accesorios">Perif y Accesorios</option>
  <option value="Placas de Video y Editora">Placas de Video y Editora</option>
  <option value="Impresoras">Impresoras</option>

</select>
<label for="CombDependiente">Subcategoria:</label>
<select name="CombDependiente" id="CombDependiente"></select>
<input type="submit" value="Ir" />
</form>

</body>
</html>
Notese que algunos items estan vacios, se puede poner que diga Vacio en vez de dejarlo en blanco. Por ahora es solo una prueba, cuando la pagina este on line tendra mas informacion la base de datos.

Solo me queda lo que dije mas arriba, lo de body onload, si alguien sabe como, por favor me lo dice? Sino posteo en el foro de JavaScript.

Saludos!!
i_e_s27 está desconectado   Responder Citando
Antiguo 01-abr-2008, 05:23   #13 (permalink)
i_e_s27 tiene algunos puntos positivos de karma
 
Avatar de i_e_s27
 
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 195
Re: Problema con combos anidados

Ahora, el problema que tienes tu es que si haces click en atras no te muestra cual era la opcion seleccionada en el combo dependiente, ya que este es generado dinamicamente al vuelo por JavaScript y no queda en memoria.

Pero el combo padre, que tiene los datos ya incrustados, y sin JavaScript si te tendria que mantener la opcion seleccionada, cierto?

Si yo encontrase como llamar a mi funcion en el body onload, cuando vuelva para atras en el explorador, se ejecuta esta funcion, y como la opcion padre sigue marcada, las opciones hijo tambien estaran disponibles; no sera la que seleciono el usuario, sino la primera disponible, pero vamos avanzando algo... ahora puedes utilizar la famosa session o un cookie (o mejor ambos por si acaso jajaja) para poner cual es el item que tiene que estar seleccionado, en una funcion en JavaScript que tendria que tener una estructura de este tipo:

Si <%aca pones la cookie en asp%> no es null o <%la session con el combo dependiente sacado en asp%> no es null
selecionar esa opcion en el combo dependiente
end if

Y esto iria al final de la pagina, para que sea la ultima instruccion en ejecutarse.

Lastima que yo de JavaScript no entiendo... y trato de escaparle

Creo que asi podrias resolver tu problema...

Es solo una sugerencia
i_e_s27 está desconectado   Responder Citando
Antiguo 01-abr-2008, 05:35   #14 (permalink)
i_e_s27 tiene algunos puntos positivos de karma
 
Avatar de i_e_s27
 
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 195
Re: Problema con combos anidados

Otra cosa que se me ocurre es que valides el formulario primero en java, osea que no te envie a otra pagina donde se valida y si hay algo que anda mal te muestra el cartelito y te dice que vuelvas atras. Que valide antes de redireccionar, para no perder la info.

Sino lo que puedes hacer es: al apretar Enviar tu envias todos los datos del form a una pagina (en este caso ella misma), no? bueno, recupera esos datos con Request.Form y meteselos a las opciones: combobox, text box, etc..

Seria algo asi:

If Resquest.Form("variable") <> "" Then
Le metes el valor
End If

Asi cuando le aparezca el cartelito de error arriba del todo, abajo sigue teniendo el formulario con todo lo que selecciono antes, y puede corregir en lo que no ingreso bien, y apretar el boton de enviar nuevamente. Sin necesidad de hacer para atras.

Que te parece?
i_e_s27 está desconectado   Responder Citando
Antiguo 01-abr-2008, 06:10   #15 (permalink)
i_e_s27 tiene algunos puntos positivos de karma
 
Avatar de i_e_s27
 
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 195
Re: Problema con combos anidados

Por cierto... ya encontre como hacer el body onload

Reemplaza en el codigo asp que habia pasado <body> por esto:

<body onLoad="Combos(document.forms['AgregarProducto'].or);">

Funciona de maravillas! Tanto en IE (7) como en Firefox (2.0.0.13)

Última edición por i_e_s27; 01-abr-2008 a las 06:27.
i_e_s27 está desconectado   Responder Citando
Antiguo 01-abr-2008, 07:45   #16 (permalink)
Colaborador
JuanRAPerez tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 1.668
Re: Problema con combos anidados

Cita:
Iniciado por i_e_s27 Ver Mensaje
Otra cosa que se me ocurre es que valides el formulario primero en java...

cierto es lo mas lógico si son campos obligatorios.


suerte
__________________
Juan Ramón Pérez
San Salvador, El Salvador
JuanRAPerez esta en línea ahora   Responder Citando
Antiguo 01-abr-2008, 08:32   #17 (permalink)
i_e_s27 tiene algunos puntos positivos de karma
 
Avatar de i_e_s27
 
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 195
Re: Problema con combos anidados

Cita:
Iniciado por JuanRAPerez Ver Mensaje
cierto es lo mas lógico si son campos obligatorios.


suerte
Si, pero si el usuario tiene Java desabilitado... toda la validacion no sirve para nada... por eso hay que usar validacion Java y ASP.
i_e_s27 está desconectado   Responder Citando
Antiguo 01-abr-2008, 09:06   #18 (permalink)
Colaborador
JuanRAPerez tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 1.668
Re: Problema con combos anidados

bueno...

creo que por eso es que hay que tomar todas las cosas que se puedan hacer

1. poner validación a nivel de java (si el usuario lo tiene deshabiltiado validamos en ASP)
2. validar vía asp que las variables no vayan vacías. (si es asi podemos hacer un response redirect con los valores que