Kategorien
Allgemein

DA nach Schließen des Modaldialogs per X-Icon oder Escape

Nach dem Schließen eines Modalen Dialogs ist es oft notwendig, in der aufrufenden Seite eine Dynamic Action (DA) auszulösen. In APEX gibt es dafür einen DA Event “Dialog Closed”. Damit kann zum Beispiel eine Region aktualisiert werden.

Wenn der Benutzer im Modalen Dialog allerdings die Taste Escape drückt oder das Schließen-Symbol (X) oben rechts benutzt, wird der Dialog zwar geschlossen, aber das Ereignis “Close Dialog” wird nicht ausgelöst. Hier die einfachste Lösung, die mir bekannt ist.

Auf der Seite des Modalen Dialogs muss unter Page › Dialog › Attributes folgender JavaScript-Code eingebunden werden:

close: function(event, ui) {
  apex.navigation.dialog.close(
    true, {dialogPageId:2}
  );
}

Die “2” am Parameter dialogPageId ist hierbei die Page-ID des Modal-Dialogs.

Dadurch wird die DA “Dialog Closed” ausgelöst und die DA startet auf für diese Fälle.

Ein Hinweis dazu: Der erwartete (und empfohlene) Ansatz ist, dass das Schließen eines Dialogs keinen Einfluss auf den Session-Zustand haben sollte. Das bedeutet auch, dass es eigentlich nicht notwendig ist, Inhalte auf der Elternseite zu aktualisieren. Die Anwendungslogik sollte daher vor dem Einsatz dieser Methode überdacht werden, um die Benutzererwartung zu erfüllen.

Gefunden habe ich die Lösung im Blog von Thirumalai:
https://feed-skill.blogspot.com/2018/07/refresh-interactive-grid-ig-when-model.html

Alternative Lösungen werden Oracle Forum diskutiert:
https://community.oracle.com/message/13117493

Von Markus Hohloch

Selbständiger Berater für Softwareentwicklung und Informationstechnik. Schwerpunkte sind die Entwicklung von Web-Applikationen mit Oracle APEX oder Java und Jasper Reports.

Schreibe einen Kommentar

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

Diese Seite ist durch reCAPTCHA und Google geschütztDatenschutz-Bestimmungen UndNutzungsbedingungen anwenden.

The reCAPTCHA verification period has expired. Please reload the page.