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!