Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle Apex:Schritt-für-Schritt-Ansatz zum Erstellen von Optionsfeldern in interaktiven Berichten

Sie können entweder einen Spaltenlink verwenden, um den Datensatz auszuwählen und zu einer anderen Seite zu navigieren, oder ein Optionsfeld und eine Seitenschaltfläche/Link, um dies zu tun. Ich demonstriere beides anhand eines einfachen Reports für die DEPT-Tabelle.

Methode 1:Optionsfeld

Für das Optionsfeld können wir dem Bericht mithilfe von apex_item.radiogroup eine zusätzliche Spalte hinzufügen Funktion, um ein Optionsfeld zu erstellen, dessen Wert DEPTNO:

ist

Standardmäßig wird der HTML-Code der Radiogruppe aus Sicherheitsgründen maskiert, was zwar nicht erwünscht ist, aber sehr schön veranschaulicht, was es tut:

Wir können das beheben, indem wir die Spalteneigenschaft in „Standardberichtsspalte“ ändern:

Jetzt sehen wir:

Durch Klicken auf das Optionsfeld in einer beliebigen Zeile wird diese ausgewählt und die Schaltflächen in anderen Zeilen deaktiviert.

Um mit der ausgewählten Zeile zu einer anderen Seite zu navigieren, benötigen wir eine Schaltfläche zum Senden der Seite mit einer speziellen Anfrage:

Wenn Sie auf diese Schaltfläche klicken, wird die Seite mit einem Anforderungswert von "SELECT" (dem von mir gewählten Schaltflächennamen) gesendet. So können wir einen On-Submit-Seitenprozess schreiben, der ausgelöst wird, wenn die Anfrage „SELECT“ lautet, herausfinden, welches Optionsfeld ausgewählt wurde (falls vorhanden) und die ausgewählte DEPTNO in einem versteckten Element namens beispielsweise P34_DEPTNO speichern. Wir finden heraus, um welchen Button es sich handelt, indem wir uns das APEX-Array apex_application.g_f01 ansehen die wir ausgewählt haben, indem wir 1 übergeben haben als erster Parameter für apex_item.radiogroup :

if apex_application.g_f01.count > 0 then
   -- Array has been populated i.e. user chose a value
   :p34_deptno := apex_application.g_f01(1);
else 
   -- Array has not been populated i.e. user did not choose a value
   :p34_deptno := null;
end if;

Dann können wir einen Zweig definieren, der zur neuen Seite navigiert, wenn (a) request ='SELECT' und (b) P34_DEPTNO nicht null ist.

Und das ist es. Ziemlich viel Arbeit, aber wenn das die Voraussetzung ist, wird es reichen.

Methode 2:Spaltenverknüpfung

Einfacher ist es, auf die Radiobuttons zu verzichten und einfach eine der Berichtsspalten zu verlinken:

Dies verwandelt die Spalte (ich habe DNAME gewählt) in einen Link, der zur neuen Seite navigiert und den ausgewählten DEPTNO-Wert mitnimmt:

Das ist es! Kein verstecktes Element, kein Button, kein Seitenprozess, kein Branch...