Elemento de tipo numérico que depende de un elemento de tipo lista de selección

En ésta ocasión voy a contestar una duda que me llegó, el cual necesitaban saber cómo obtener el valor de un elemento de tipo numérico que dependa del valor seleccionado desde una lista de selección.

Para contestar esto he creado una página en blanco y una región de contenido estático con dos elementos, uno de ellos de tipo campo numérico y el otro de tipo lista de selección.

Para el primer elemento de tipo Lista de Selección, configuramos:

Sección Apariencia:

  • Nombre: PX_EMPLEADO
  • Tipo: Lista de Selección

Sección Etiqueta:

  • Etiqueta: Empleado

Sección Configuración:

  • Acción de Página al Seleccionar: Submit Page

Sección Lista de Valores

  • Tipo: Consulta SQL
  • Consulta SQL: select ename, empno from emp order by 1

Para el segundo elemento de Campo Numérico, configuramos:

Sección Apariencia:

  • Nombre: PX_SALARIO
  • Tipo: Campo Numérico

Sección Etiqueta:

  • Etiqueta: Salario

Sección Origen

  • Tipo: Consulta SQL (devuelve valor único)
  • Consulta SQL: select sal from emp where empno = :PX_EMPLEADO
  • Usado: Siempre, sustituyendo cualquier valor existente en el estado de sesión

Ejecutamos la aplicación y vemos que cuando cambiamos la selección del primer elemento se muestra el salario en el campo numérico.

Ahora bien, como podemos ver cada vez que se selecciona un nuevo elemento de la lista toda la página se recarga la página y si tenemos innumerables elementos y regiones eso puede hacer que la aplicación decaiga en performance.

Para evitar que se recargue toda la página podemos usar Acciones Dinámicas para que cuando cambie el elemento seleccionado de la lista solo se refresque la región estática contenedora de los dos elementos de página.

Desde el Diseñador de Páginas de la página que contiene nuestros elementos de página, hacemos clic en el elemento PX_SALARIO y en la sección Origen, configuramos que el tipo sea Nulo.

Luego, hacemos clic sobre el Elemento PX_EMPLEADO con el botón derecho del mouse y seleccionamos Crear Acción Dinámica.

  • Sección Identificación
    • Nombre: Mostrar Salario
  • Sección Cuando
    • Evento: Cambiar
    • Tipo de Selección: Elementos
    • Elementos: PX_EMPLEADO

Hacemos clic en la acción Verdadera “Mostrar” y configuramos:

  • Sección Identificación
    • Acción: Definir Valor
  • Sección Configuración
    • Definir Tipo: SQL Statement
    • Sentencia SQL: select sal from emp where empno = :PX_EMPLEADO
    • Elementos de Página a Ejecutar: :PX_EMPLEADO
    • Caracteres Especiales de Identificación: Si
    • Suprimir Evento de Cambio: No
  • Sección Elementos Afectados
    • Tipo de Selección : Elementos
    • Elementos: PX:SALARIO
  • Opciones de Ejecución:
    • Evento: Mostrar Salario
    • Arrancar Cuando el Resultado de Evento Sea: Verdadero
    • Disparar al Inicializar: Verdadero
  • Guardamos los cambios

Seleccionamos el elemento PX_EMPLEADO y en la sección de configuración configuramos la opción Acción de Página al Seleccionar = None.

De ese modo sólo se refresca la región cuando se cambia la selección en la lista, no afectando las demás regiones y elementos que tiene nuestra página.

Hasta pronto!

Publicado por Ing. Clarisa Maman Orfali

Clarisa es Oracle ACE Director, con más de 27 años de experiencia como desarrolladora, docente, autora y consultora en Tecnologías de la Información. Clarisa es de Argentina que vive y trabaja en Irvine, California, en los Estados Unidos. Ella es autora de los primeros tres libros de Oracle APEX. También es co-fundadora del Grupo de Usuarios de Oracle de Argentina (AROUG) y se ha especializado los últimos 13 años en el desarrollo de aplicaciones web con Oracle Application Express (APEX).

A %d blogueros les gusta esto: