2010-04-15 9 views
1

Je suis relativement nouveau dans Oracle Apex et j'ai un problème. Notre application a actuellement une méthode de saisie de données, avec plusieurs zones de texte et une liste de valeurs optionnelle. Je voudrais avoir une liste de valeurs en fonction des informations dans une autre zone de texte comme ceci:Remplissage d'un LOV dans Oracle Apex sur la base des données d'une autre zone de texte

select APPOINTMENT_ID PATIENT_ID from APPOINTMENT where PATIENT_ID = :P9_PAT_NUM 

où P9_PAT_NUM est un numéro de patient dans une zone de texte. Cependant, cela ne fonctionnerait apparemment que si la boîte de texte a déjà été soumise, sinon elle suppose que la zone de texte est null.

Existe-t-il un moyen de travailler avec une liste de valeurs ou une autre méthode?

Répondre

3

Dans Apex version 4+, il s'agit d'une fonctionnalité intégrée. Vous spécifiez simplement l'élément dont dépend la liste de valeurs dans la propriété Propriété en cascade LOV Parent (s).

Avant la version 4, il y a un certain nombre de solutions disponibles - Google "LOV en cascade Apex" et vous trouverez quelques solutions qui impliquent un peu de travail, par exemple:

Javascript: http://www.inside-oracle-apex.com/generic-solution-for-cascading-select-listslovs/

ApexLib: http://one-size-doesnt-fit-all.blogspot.com/2007/10/apex-cascading-lovs-revisited.html

ExtJS Utilisation: http://application-express-blog.e-dba.com/?tag=apex-cascading-lov

0

Une fois Apex 4.0 sortira (devrait être assez bientôt) ce sera très simple en utilisant sa fonctionnalité LOV en cascade. Avant que vous pouvez le faire dans l'une des deux façons simples mais maladroites ou difficiles, mais slicks ...

1) Facile mais maladroits:

Ajouter les éléments suivants Javascript aux attributs d'éléments de formulaire HTML du premier élément :

onchange="doSubmit()" 

Cela présentera la page lorsque le premier élément est modifié, alors quand il recharge la valeur actuelle de l'élément aura été utilisé pour alimenter le LOV. Je dis que c'est "maladroit" parce que la page entière se recharge (lente), et le curseur revient à la position de départ.

2) Difficile mais lisse:

Si votre LOV est un popup alors vous avez juste besoin d'obtenir la valeur du premier élément en état de session, que vous pouvez faire via Javascript et AJAX.

Si votre liste de valeurs est une liste de sélection, vous devez recharger dynamiquement la liste de sélection en utilisant Javascript et AJAX.

Je ne vais pas entrer dans les détails de ces derniers, mais je vois que pendant que j'écris ce Jeffrey Kemp a posté quelques liens utiles qui expliqueront plus en détail.