Changing/Appending Screen Input Parameters
Question
Application Type
Reactive
Service Studio Version
11.12.2 (Build 50367)

I have a screen with 3 non-mandatory Input Parameters.
These 3 non-mandatory Input Parameters are bound to 3 respective Dropdown boxes. The data list in these 3 Dropdown boxes are retrieved from the Database.
Based on these 3 input values from the Dropdown boxes, a table of data is retrieved.
The path of this screen is for example /AttendanceSheet. Since the 3 Input Parameters are non-mandatory, the Screen can be accessed without any query parameters appended to the URL.

What I hope to achieve is that after selection of the 3 Dropdown boxes, the selection can remain even when I refresh or traversing back to this screen by clicking on the browser back button.

What I have attempted
I have tried using both window.history.replaceState() by adding a Javscript to the Dropdown box OnChange event to add a query parameter to the URL (which becomes /AttendanceSheet?Zone=ABC). However, after clicking on back button to go back to my dashboard screen (/Dashbaord) from /AttendanceShee?Zone=ABCt, I am unable to go forward by click on the forward button to /AttendanceSheet?Zone=ABC from /Dashboard. It seemed to have gone forward and then back immediately as I saw the Location Bar flashing (changing to /AttendanceSheet?Zone=ABC and then back to /Dashboard) and the forward button is still active.

Something similar also happens when I tried to use window.history.pushState(), except that when the back button is clicked, it just goes back to /AttendanceSheet from /AttendanceSheet?Zone=ABC but the same issue as above happens when clicking on the forward button.

I have also tried setting Destination to "self" together with the setting the Input Parameters based on the values selected from the 3 Dropdown boxes in the OnChange event of the Dropdown box. However, this will cause the loading of the data list again, which I don't wish for it to happen to allow users to have a seamless experience and lesser loading time.

Are there any recommended solutions to this?

I have attached a sample OML with the usage of 1 Input Parameter and window.history.pushState()

JKTest.oml

Hi,

I think you can try to use client variable to store the input.

You can do it at OnInitialize event. Then whenever use change the input update the corresponding variable.

I updated your .oml, you can have a look.

Cheers,

Khuong

JKTest.oml

Looks great thanks! In my current context, it will work. But looking forward, if I need to bookmark the page, would you have a solution for it? (=

Hi,

Base on the document, it's not possible for bookmark.

I'm not very sure and haven't try it yet but you can try to use cookie to store the input value. Here is the document for Cookie.

Hope this helps,

Khuong

Community GuidelinesBe kind and respectful, give credit to the original source of content, and search for duplicates before posting.