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

cambio de valor en un combobox

Estas en el tema de cambio de valor en un combobox en el foro de ASP Clásico en Foros del Web. Buenos dias tengo un pequeño problema, tengo este pequeño codigo que lo realice para que me cambiar el valor de un combobox pero no me ...
  #1 (permalink)  
Antiguo 09/06/2012, 09:23
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 2 meses
Puntos: 0
cambio de valor en un combobox

Buenos dias tengo un pequeño problema,
tengo este pequeño codigo que lo realice para que me cambiar el valor de un combobox pero no me funciona no se si estoy escribiendo mal la linea del otro combobox, se los explico un poco

el codigo ("d134") es un combobox si el valor de este combobox es igual a "0001- Persona Natural" me debe cambiar el valor del combobox llamadado ("d140") al valor 0 o null para que se vuelva a seleccionar, el combobox ("d140") se llena con valore de 1 al 9 como opciones, pero no me funciona creo que esta mal escrita la linea en donde se le cambia el codigo al combobox ("d140"). les agradezco de antemano la ayuda que me puedan brindar.

if request.Form("d134") = "0001-Persona Natural" then
request.Form("d140.value").value = "0"
end if
  #2 (permalink)  
Antiguo 12/06/2012, 06:33
 
Fecha de Ingreso: abril-2012
Mensajes: 71
Antigüedad: 12 años
Puntos: 16
Respuesta: cambio de valor en un combobox

no entiendo bien lo que quieres hacer y tampoco soy experto en ASP pero no creo que puedas asignar un valor mediante "request.form"

if request.Form("d134") = "0001-Persona Natural" then
request.Form("d140.value").value = "0" ----------> ???
end if
  #3 (permalink)  
Antiguo 12/06/2012, 08:42
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: cambio de valor en un combobox

he tratado por el document.getelementbyid pero tampoco me funciona. cual otro podria utilizar para cambiar el valor de este combobox.
  #4 (permalink)  
Antiguo 12/06/2012, 09:16
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: cambio de valor en un combobox

creo que no me he explicado bien: tengo dos combobox uno contiene una lista de dos opciones que es persona natural y la otra es empresa, el otro combobox tiene una lista de 0 al 9, que se habilita cuando se selecciona la opcion del primer combobox que es empresa, entonces cuando se seleccione el primer combobox con la opcion de persona natural el segundo combobox pase a l valor 0. como lo puedo hacer
  #5 (permalink)  
Antiguo 12/06/2012, 16:29
 
Fecha de Ingreso: abril-2012
Mensajes: 71
Antigüedad: 12 años
Puntos: 16
Respuesta: cambio de valor en un combobox

si se trata de activar y desactivar simplemente el segundo combo entonces se puede hacer tranquilamente con javascript, con ASP me parece rebuscado en cuanto para obtener los valor con "Request" tienes que "cargar paginas"...de lo contrario, si tienes que consultar una base en el medio de la operacion de activado y desactivado del combo te conviene "ajax"...
busca que hay un monton de ejemplos...la idea es usar los eventos de javascript tipo "OnClick()"...
  #6 (permalink)  
Antiguo 14/06/2012, 10:15
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Respuesta: cambio de valor en un combobox

Cita:
Iniciado por valderramalex Ver Mensaje
creo que no me he explicado bien: tengo dos combobox uno contiene una lista de dos opciones que es persona natural y la otra es empresa, el otro combobox tiene una lista de 0 al 9, que se habilita cuando se selecciona la opcion del primer combobox que es empresa, entonces cuando se seleccione el primer combobox con la opcion de persona natural el segundo combobox pase a l valor 0. como lo puedo hacer
Veamos si te he comprendido bien. Tú deseas que lo que selecciones en el 1er. combobox (un select en todo caso) modifique el contenido del 2do combobox. Si este es el caso, comparto contigo el script que utilizo para tal efecto.

Cita:

<%
varMsjeTipoVenta="..."
For J = 0 To UBound(arrDBDataTipoDocumentos, 2)
If arrDBDataTipoDocumentos(2,J)=varTipoVenta Then
varMsjeTipoVenta=arrDBDataTipoDocumentos(1,J)
Exit For
End If
Next
%>
<script type="text/javascript">
function InitOptions()
{
if (style1=="Tipo de Cobranza")
{fixSelect("<%= varMsjeTipoVenta %>");}

if (style1=="Cancelada")
{
fixSelect("Tipo de cancelación");
<%
For J = 0 To UBound(arrDBDataTipoDocumentos, 2)
If arrDBDataTipoDocumentos(4,J)="C" Then
%>
fixSelect("<%= arrDBDataTipoDocumentos(1,J) %>");
<%
End If
Next
%>
}

if (style1=="Diferido")
{fixSelect("Diferido");}
}

function fixSelect(val)
{
if (!pause)
{document.write("<option>"+val);}
else
{
var gr = document.registros.codigotipodeventa;
var valOption = new Option(val);
var valLen = gr.length;
gr.options[valLen] = valOption;
}
}

function reInitOptions()
{
var val = document.registros.tiposdecancelacion;
var gr = document.registros.codigotipodeventa;
style1 = val.options[val.selectedIndex].text;
for (i=gr.length;i>0;i--)
{gr.options[0] = null;}
pause = true;
InitOptions();
gr.options[0].selected = true;
return false;
}
</script>



<select id="tiposdecancelacion" name="tiposdecancelacion" class="texto_amarillo" onChange="reInitOptions(); icono(4);" tabindex="5">
<option value="NO">Tipo de Cobranza</option>
<option value="C">Cancelada</option>
<option value="D">Diferido</option>
</select>

<script type="text/javascript">
var pause = false;
var style1 = document.registros.tiposdecancelacion.options[0].text;
document.write("<select name='codigotipodeventa' class='texto_amarillo' onChange='mostrar(this.selectedIndex,<%= varProceso %>);'>");
document.write("<option selected><%= varMsjeTipoVenta %></option>");
InitOptions();
document.write("<\/select>");
</script>

En este caso el array arrDBDataTipoDocumentos contiene todos los tipos de documentos utilizados tanto para un tipo de cobranza cancelada o diferida. Obviamente hay un campo que los agrupa, de suerte que pueda saber que documento va a determinada condición (cancelada o diferida).

La variable varMsjeTipoVenta la uso para mostrar, en el caso se trate de un registro ya procesado, cual fue el tipo de cobranza seleccionado.

El resto creo que podrás entenderlo bien si lo revisas con detenimiento pues no es complicado. Sólo debes tener en cuenta los nombres de los 2 select y guiarte por ello.




Ahora, también puede ser que lo que busques es que según una acción, la que sea, el contenido de un select se actualice sin necesidad de que se recargue la página. En este caso, se necesita usar Ajax. Te pongo el siguiente código que estoy usando en un proyecto actual.

Cita:
<div id="listaDescuentos" align="center">
<select id="descuento" name="descuento" onChange="escogerDescuento(this.value); restaurar('DCT02');" class="texto_amarillo">
<%
varFechaHoy=Month(Now) & "/" & Day(Now) & "/" & Year(Now)
Temp="Select * From Descuentos Where IsDate(FechaLimite)=FALSE Or FechaLimite > #" & varFechaHoy & "# And FechaActivacion <= #" & varFechaHoy & "# Order By Nombre"
Tabla1.Open Temp, Conexion
arrDBDataDescuentos=Tabla1.GetRows()
Tabla1.Close
%>
<option value=0>Sin Descuento [<%= UBound(arrDBDataDescuentos, 2) + 1 %> disponibles]</option>
<%
For J = 0 To UBound(arrDBDataDescuentos, 2)
%>
<option value=<%= arrDBDataDescuentos(0,J) %>><%= arrDBDataDescuentos(1,J) %></option>
<%
Next
%>
</select>
<img src="../imagenes/png/add.png" alt="Agregar/Editar descuento" border="0" onClick="agregarDscto();" style="cursor:hand;">
</div>
La función escogerDescuento() en este caso no tiene mayor importancia pues lo que hace es hacer visible un layer donde se carga el detalle del descuento seleccionado (descuento en %, moneda nacional y moneda extranjera). Si necesitas el código me avisas. Ahora bien, lo que importa aquí es la función agregarDscto() que tiene el siguiente código:

Cita:
function agregarDscto()
{
LeftPosition=(screen.width)?(screen.width-500)/2:100;
TopPosition=(screen.height)?(screen.height-350)/2:100;

ventana = window.open("cotizacionesDetalle.asp?clase=agregar ", "infoPedido", "top="+TopPosition+",left="+LeftPosition+",width=5 00,height=350,scrollbars=0,directories=0,toolbar=0 ,location=0,status=0,resizable=0,menubar=0");
ventana.focus();
}
El contenido de la página cotizacionesDetalle.asp tiene todo el código necesario para poder agregar y/o editar un registro. Para lo que pides tampoco es necesario mencionarlo, además que esto es algo muy personal en el sentido que cada diseño tiene sus propios requerimientos y no hay nada nuevo en el código de edición y agregar.

Sin embargo lo que es importante aquí es lo que sucederá una vez procesado el cambio o adición de registro pues lo que pasará es que una vez procesado los cambios (edición o agregar) voy a hacer que el select se modifique sin que se recargue la página.

Para hacer esto lo que haré será utilizar una función en Ajax que cargará un archivo ASP en el div id="listaDescuentos". Simplemente debo agregar una línea en javascript al finalizar el proceso de uso de la base de datos. Es decir, imagina un formulario en que o se cargan los datos de un registro o esta en blanco para que ingreses nuevos datos. Al hacer clic en el botón submit se desencadenarán una serie de procesos que pueden ser evaluación de los datos, validación de datos, etc. y que luego de ser superados satisfactoriamente, se procede a cargar una página en ASP que se conecta a la base de datos y procede a ingresar o modificar (según sea el caso) los datos enviados. Luego, cierras la base de datos y la conexión y pones este simple código:

Cita:
<script type="text/javascript">
window.close();
opener.clientSideInclude(2,0);
</script>
Ahora, uso el window.close() porque he abierto una ventana previamente, y utilizo el opener.clientSideInclude(2,0); porque la función que estoy invocando se encuentra en la página padre (eso es lo que hace el OPENER).

El código de la función es el siguiente

Cita:
function clientSideInclude(n,ruc,filtro)
{
var req = false;

if (window.XMLHttpRequest) // For Safari, Firefox, and other non-MS browsers
{
try
{req = new XMLHttpRequest();}
catch (e)
{req = false;}
}
else if (window.ActiveXObject) // For Internet Explorer on Windows
{
try
{req = new ActiveXObject("Msxml2.XMLHTTP");}
catch (e)
{
try
{req = new ActiveXObject("Microsoft.XMLHTTP");}
catch (e)
{req = false;}
}
}

//req.expires=-1;
if(n==1)
{var element = document.getElementById("listaCotizaciones");}
else
{var element = document.getElementById("listaDescuentos");}

if (!element)
{alert("El ID " + id + "enviado a clientSideInclude es erróneo. Se necesita un elemento DIV o SPAN con este ID en el módulo."); return;}
if (req)
{
// Synchronous request, wait till we have it all
if(n==1)
{url="listarCotizaciones.asp?ruc="+ruc+"&filtro="+ filtro;}
else
{url="listarDescuentosRV.asp";}

req.open('GET', url, false);
req.send(null);
element.innerHTML = req.responseText;
document.getElementById("montoDescuento").value="" ;
}
else
{element.innerHTML = "Lo sentimos pero su navegador no soporta objetos XMLHttpRequest. Esta página requiere Internet Explorer 8 o superior para Windows, Firefox para cualquier sistema, o Safari. Otros navegadores compatibles también pueden ser utilizados.";}
}
El primer valor que paso a la función es para indicarle que archivo va a cargar, pues el mismo principio lo uso para el combobox de cotizaciones como el de descuentos. En este caso es 2 por lo que usaré el id de descuentos.

Y este es el código de la página listarDescuentosRV.asp

Cita:
<select id="descuento" name="descuento" onChange="escogerDescuento(this.value); restaurar('DCT02');" class="texto_amarillo">
<%
varFechaHoy=Month(Now) & "/" & Day(Now) & "/" & Year(Now)
Temp="Select * From Descuentos Where IsDate(FechaLimite)=FALSE Or FechaLimite > #" & varFechaHoy & "# And FechaActivacion <= #" & varFechaHoy & "# Order By Nombre"
Tabla1.Open Temp, Conexion
arrDBDataDescuentos=Tabla1.GetRows()
Tabla1.Close
%>
<option value=0>Sin Descuento [<%= UBound(arrDBDataDescuentos, 2) + 1 %> disponibles]</option>
<%
For J = 0 To UBound(arrDBDataDescuentos, 2)
%>
<option value=<%= arrDBDataDescuentos(0,J) %>><%= arrDBDataDescuentos(1,J) %></option>
<%
Next
%>
</select>
<img src="../imagenes/png/add.png" alt="Agregar/Editar descuento" border="0" onClick="agregarDscto();" style="cursor:hand;">
Si te das cuenta es básicamente el mismo código que utilice al inicio.

Y listo, así nada más

Espero haberte sido de utilidad
Un saludo desde Lima, Perú

Etiquetas: combobox
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 06:08.