Kevin
Kevin

Reputation: 207

How to add a dynamic action that will redirect to another page by executing JavaScript Code?

I have buttons on my apex application that executes custom PL/SQL codes upon being clicked. They have names APPLY (Acknowledge) and CHANGE (Count Correct). I need to have it so that when APPLY is clicked, it redirects to the same page (with the PL/SQL code implemented) and when CHANGE is clicked, it redirects to another page (with PL/SQL code implemented).

I tried setting a conditional branch for After Processing by way of "When Button is Pressed" and/or "Condition Type: Request = Expression 1" with the value of Expression 1 equaling "APPLY" or "CHANGE". I can't produce the results I am looking for (frustratingly) this way. APEX says that the submitted page Request takes on the name button that is clicked (i.e APPLY when APPLY is clicked) but I can not get that to happen.

I am now seeking to add a True Action to my Dynamic Actions for APPLY and CHANGE (which are currently "Execute PL/SQL Code" and "Submit Page" for each) which executes a Javascript Code redirecting to the desired page in the application.

The code, i think, would utilize something like this

"apex.navigation.redirect('f?p=928:35:4081364075246::NO:::');"

page 35 is the page I'd like the CHANGE button to redirect to, in this case.

I'm not as versed in JavaScript as I'd like to be, so any help with my methodology on any of this would be appreciated.

Upvotes: 5

Views: 37027

Answers (3)

LG-C
LG-C

Reputation: 47

Here's how I solved a similar situation: I wanted the DELETE button on page 2 to perform deletes on other tables, in addition to deleting the row displayed, and then return to page 1:

  • Deleted the existing DELETE button.
  • Created new button with: Button Name=DELETE, Label=Delete, Action=Submit Page.
  • Created an After Submit Process Branch with: Name=Delete and Return to Page 1, Execute Point=After Submit, Behavior Type=Page or URL, Target=Page 1, Advanced Request=DELETE, Server Side Condition=When Button Pressed=DELETE, Type=PL/SQL Function Body,

then PL/SQL FUNCTION BODY:

declare

   lv_msg   varchar2(2000) := null;

begin
   pz_delete_related_records(:P2_KEY1, :P2_KEY2, lv_msg);

   DELETE FROM BASE_TABLE
   WHERE KEY1 = :P2_KEY1
   AND   KEY2 = :P2_KEY2;

   RETURN TRUE;

end;

Upvotes: 0

WW Davos
WW Davos

Reputation: 21

In a recent project, I needed to do a page redirect once the user clicked the Save button on a model page. The button had a Dynamic action that included 3 separate actions:

  • Execute PL/SQL
  • Submit Page
  • Close Dialog

In between the Submit Page and the Close Dialog, I added an Execute Javascript action that clicks a hidden button that I added to the page.

 document.getElementById("BTN_ID").click();

The hidden button was set to redirect the user in Behavior -> Action -> Redirect to Page in Application, and the page #.

I hid the button with #BTN_ID{visibility:hidden;} placed in the CSS Inline section of the page.

This worked.

Upvotes: 2

Kevin
Kevin

Reputation: 207

I finally found out how to do this. The Request of the button (specifically the dynamic action of the button) was not set to the button name because the 'Request/Button Name' of the 'Submit Page' true action was not set to the name of the button.

Make sure in the dynamic action to add this information under 'Settings'. The branch should be placed to 'Submit: before Processing' with the condition 'Request = Expression 1' with Expression 1 equaling the button name!

Upvotes: 6

Related Questions