Buttons mit Confirm-Message in Report einbauen

Links in Reports zu erstellen, ist in Oracle APEX denkbar einfach. Auch Font-Awesome-Icons lassen sind dabei verwenden, wie Tobias gezeigt hat.

Individuelle Buttons zum Kopieren oder Löschen von einzelnen Zeilen lassen sich damit ganz fix erstellen. Aktionen wie Löschen sollten vom Benutzer allerdings vorher bestätigt werden.

Und wie mache ich das am geschicktesten?

Link in Reportzeile erstellen, den der Benutzer bestätigen muss

Dazu habe ich bereits viele mehr oder weniger umständliche Varianten gesehen. Am einfachsten und am nächsten am Standard funktioniert es folgendermaßen:

confirm_w_request_and_parameter

Die Report-Spalte als Link deklarieren und den Target Type auf “URL” setzen. Die URL muss dann folgendermaßen aussehen:

javascript:apex.confirm(htmldb_delete_message, {
  request:"DELETE_ROW",
  set:{"P1_DELETE_MY_ID":#MY_ID#}
});

Die JavaScript-Methode confirm kennt jeder, der per Assistent bereits ein einfaches Formular mit Löschen-Button erstellt hat. Bei Klick auf “Löschen” wird ein Standard-Popup angezeigt und erst nach der Bestätigung wird der Submit ausgeführt.

Allerdings nutzen wir hier eine weniger bekannte Variante von apex.confirm: In unserem Fall wird neben dem Bestätigungstext als zweiter Parameter ein Set aus Request und Item-Set übergeben. Beim Submit wird zusätzlich die Variable P1_DELETE_MY_ID mit dem Zeilen-Wert der Spalten MY_ID gesetzt.

Der Rest ist einfach. In einem After-Submit Process auf der gleichen Seite, löschen wir die Zeile per manuellem SQL.

delete from my_table where my_id = :P1_DELETE_MY_ID;

Dieser Prozess soll natürlich nur bei Condition Request = “DELETE_ROW” ausgeführt werden.

In apex.confirm ist es auch möglich, mehrere Items zu setzen. Außerdem steht mit “showWait” eine weitere Set-Option, die das übliche Lade-Symbol auf der abgedunkelten Seite anzeigt. Das bietet sich vor allem für länger laufende Prozesse an.

apex.confirm("Wilde Berechnung starten? Das kann dauern!", {
  request:"INSANE_CALCULATION",
  set: {"P1_DEPTNO":10, "P1_EMPNO":5433},
  showWait:true
 });

Also: Ab sofort bitte keine Dynamic Action mit JQuery-Popup erstellen und auch nicht zu weiterer Bestätigungs-Zwischen-Modal-Seite weiterleiten oder sonstige faxen machen. Einfach zur Abwechslung mal in die API schauen und die APEX- und HTML-Boardmittel einsetzen. ^^

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.