Oracle ApEx Case pour Manipuler les Autres Valeurs Lorsque cette option est Cochée/non Cochée
Tout d'abord, je suis en utilisant la dernière version d'Oracle ApEx 4.1.1 et qu'ils ont les rapport standard qui a une case à cocher de la sélection lorsque vous cliquez dessus, voudrait mettre un autre champ avec sysdate, y compris le temps.
Lorsque cette option est décochée, souhaitez réinitialiser la valeur NULL à la date fixée dans ma déclaration précédente, ainsi que les commentaires des champs
Rapport pourrait ressembler à:
select id,
name,
telephone,
apex_item.checkbox2(10,id) as "Tick when Contacted",
apex_item.display_and_save(20,:P2_DATE) as "Date Contacted",
apex_item.textarea(30,:P2_COMMENT,5,80) as "Comment"
from my_table
Comme un exemple du rapport ci-dessus, il pourrait y avoir un total de 10 dossiers, de sorte que chacune des 10 cases sont cochées par l'utilisateur, je voudrais définir le champ de la date à sysdate, sur le spot. Je tiens également à l'inverse, quand la case n'est pas cochée - définir à la fois la date et les commentaires à NULL.
Comment devrais-je m'approche de cela? Est au-dessus de la possible grâce à une Dynamique d'Action ou directement via un JavaScript/sur demande?
Préféreraient certainement que la Dynamique de l'Action, si possible, afin d'apprendre de nouvelles méthodes pour effectuer ma tâche requise.
Vous devez vous connecter pour publier un commentaire.
Exemple sur la table EMP:
Ajouter une classe à la case de l'élément. Cela rend plus facile de cibler avec jQuery.
Créer une nouvelle dynamique d'action, par exemple "case à cocher, cliquez sur".
Événement: Cliquez
Sélection Type: Sélecteur jQuery
jQuery Sélecteur:
.check_select
(c'est la classe, nous avons ajouté la case à cocher dans le sql)Condition: Expression JavaScript
Valeur:
$(this.triggeringElement).prop('checked')
La condition est une case à cocher la case de l'élément pour voir si elle a été cochée ou décochée. prop() teste une propriété d'un élément, et renvoie true ou false dans ce cas. Lorsque la valeur est true, une véritable action du feu, d'autre une fausse action.
Une Véritable Action:
Action: Exécuter Le Code JavaScript
Code:
$(this.triggeringElement).closest("tr").find("td[headers='EMPNAME'] input").val('test');
Faux D'Action:
Action: Exécuter Le Code JavaScript
Code:
$(this.triggeringElement).closest("tr").find("td[headers='EMPNAME'] input").val('');
Les deux ont pas de types de sélection car nous avons besoin de cibler des éléments dans la même ligne que celle de l'cliqué sur une case à cocher. Il n'y a pas vraiment moyen de le faire par l'apex possibilités de sélection. Cible de la colonne à l'aide des en-têtes, et n'oubliez pas de cibler l'entrée à l'intérieur de la td (ou: le
textarea
!)Lorsque la dynamique de l'action a été créé, revenez à l'arrière. En vertu de Avancé changer le Événement de Portée à
Live
. Cela est nécessaire pour tenir compte de la pagination. Si vous ne changez pas ce paramètre, aucune action ne sera lié à des éléments après la pagination.Ensuite modifier le vrai et le faux de l'action, et décochez
Fire on Page Load
.Maintenant à rendre compte de votre date de:
Puisque vous voulez le sysdate comme valeur par défaut, je vous suggère d'ajouter un élément masqué à votre page, par exemple P9_DEF_DATE. Comme un source, utiliser un PLSQL expression, et l'utilisation
SYSDATE
.Vous pouvez ensuite utiliser la valeur de ce champ en tant que valeur par défaut, par exemple:
Dernière remarque: masquage d'une valeur par le biais du val: utilisation
val('')
avec UNIQUE les guillemets! Ne fonctionne pas avec le double de mon expérience.Quelques liens pour les actions Dynamiques docs:
http://st-curriculum.oracle.com/obe/db/apex/r40/apexdynactions/apexdynactions_ll.htm
http://dgielis.blogspot.be/search/label/Dynamic%20Actions
http://www.youtube.com/watch?v=9JAKMU8x5nI
oubliez l'OTN forums.
Un exemple d'ajax processus:
Donc, disons que je veux mettre à jour la COMM ' de la colonne de l'employé que j'ai vérifié.
De créer un nouveau processus sur la page du rapport, de lui donner une assez facile nom et ne pas mettre des espaces. Par exemple, je suis en cours d'exécution avec "update_emp".
En ajouter un autre, une véritable action de la dynamique de l'action, tapez "Exécuter du Code JavaScript".
Ce javascript sera publier sur la page, viser le
update_emp
processus.x01
etx02
sont une sorte de 'temp' variables. Ils existent donc, nous n'avons pas à présenter les éléments d'une page tout le temps pour poster des valeurs de l'état de la session. Ils font partie de la apex_application paquet.Donc ici, je suis en utilisant
x01
pour stocker les empno (valeur de la case, doncthis.triggeringElement
), etx02
pour transmettre la valeur de la commision. J'ai codé en dur ici, mais vous pouvez obtenir la valeur que vous souhaitez bien sûr.$.post
est une méthode jQuery affichage de la page.Lorsque vous êtes à l'apprentissage de la dynamique des actions ou de chalutage forums, vous pouvez vous trouver une autre méthode pour poster sur la page, à savoir
htmldb_Get
, et c'est intégré dans l'apex des fichiers javascript. Je ne l'utilise pas parce qu'il n'est pas vrai Ajax (asynchronous), mais Sjax (synchrone), et n'est pas transparant assez à mon avis. Il y a je crois quelquesGetAsync
partie, ce qui est bon et tout, mais vous aurez à peine le voir utilisé dans n'importe quel exemple. Maintenantget.get();
peut paraître facile, et vous pouvez obtenir le même résultat en 3 lignes de code au lieu de mon morceau de js, considèrent que c'est une bonne pratique à mettre en œuvre de véritables appels ajax. Vous pourriez l'attendre pour terminer un processus trop à la fois, et de réaliser toutes ceshtmldb_Get
appels dans vos applications ne sont pas aussi amusant que vous pensez qu'ils ont été...Les choses sont aussi plus compliqué avec ce rapport, le programme d'installation. Avec des éléments de page, vous pouvez prendre un autre itinéraire: au lieu d'exécuter un javascript bloc, vous pouvez exécuter une plsql bloc de code. De là, vous pouvez spécifier les éléments soumis à l'état de session (de sorte qu'ils peuvent être utilisés dans le plsql bloc) et les objets ont leur valeur définie par ce plsql bloc. (sql blocs sont exécutés côté serveur, ce qui signifie que les éléments référencés besoin d'avoir leurs valeurs dans la session sate). J'aimerais des conseils pour jouer avec que aswell.
Cela étant dit, vous pouvez le faire avec le rapport des actions de trop, mais vous aurez besoin de mettre en place des faux éléments pour stocker temporairement des valeurs qui peuvent ensuite être soumis à l'état de session. Encore une fois, je ne suis pas fan de ce que je ne suis pas allé avec que (un autre "omi' donc).
Essentiellement, ont un navigateur inspection de l'outil comme firebug ouvrir. Il vous permet d'inspecter les appels ajax fait sur les pages, et fournit un excellent moyen pour examiner cette question.