cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Anonymous
Not applicable

Reset toggle

Hello,

 

I am new to PowerApps and I am trying to use the Toggle control.  I am having an issue getting the toggle to reset to the default value when I navigate to a new screen.  For example, if I use a back arrow I'd like all the toggles to return to their default values.

 

Thanks.

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
Power Apps
Power Apps

Re: Reset toggle

In addition to the solution sent by @KC using collections, you have a few additional options to reset the value of a toggle (or other) control - using it's Default property, and using its Reset property. In both cases, what needs to happen for the control to be notified is that the value of the property needs to change - if the value of the variable bound to the default property was set to true, for example, and you set it to true again, since nothing changed, then the control won't know that it needs to take action.

 

For example, if you have two toggle controls, whose default values are opposite. Their Default properties are set as follows:

Toggle1.Default: defValue
Toggle2.Default: !defValue

And if you want to always make the Toggle1 to be off (false) when the screen is shown, and the opposite for Toggle2, you need to make sure that the value of the `defValue` context variable is changed, which you can do by a couple of calls to UpdateContext:

Screen1.OnVisible: UpdateContext({defValue:true}); UpdateContext({defValue:false})

(In some languages, you'll need to use the two semicolons - ;; - to separate the two UpdateContext expressions)

In this case, anytime you get to the screen, the value of the context variable defValue will change (if it was false, it will become true, and then false again; if it was true the first operation doesn't do anything, but the second changes its value), and that will mean that all controls that have properties bound to that variable will be notified of its change.

 

This works, but you add a dependency between the toggle (default property) and the screen (on visible) that may not be necessary. A better alternative would be to use the Reset property in the control. This way you can set the default property of the toggles the value that you want (i.e., false on Toggle1, true on Toggle2 on the example above), and set the controls Reset property to a value that would be triggered by a screen change:

Toggle1.Default: false
Toggle1.Reset: resetToggles
Toggle2.Default: true
Toggle2.Reset: resetToggles
Screen1.OnVisible: UpdateContext({ resetToggles: true }); UpdateContext({ resetToggles: false })

In this case, since the value of the `resetToggles` context variable is changed (and momentarily becomes true), the controls will be notified that they need to be reset, and they do that by applying their default values again.

View solution in original post

9 REPLIES 9
Highlighted
Power Apps
Power Apps

Re: Reset toggle

Hello, thanks for reaching to us.

 

I was just trying to reproduce the issue, and discovered that it's not possible to reset the default value of a toggle button even if we set a variable when the screen is visible again.

 

We are currently working to fix this issue.

Highlighted
Continued Contributor
Continued Contributor

Re: Reset toggle

 

You can achieve this with a Collection Variable:

On the home screen of your app create a Collection Variable in the OnVisible property of the home screen

ClearCollect(resetToggle,First(resetToggle).Value = false)

 

Set the Reset property of the Toggle button to:

First(resetToggle).Value

 

Then set the Back buttons OnSelect property to  ClearCollect(resetToggle, true)

 

Hope this helps

 

 

Highlighted
Power Apps
Power Apps

Re: Reset toggle

In addition to the solution sent by @KC using collections, you have a few additional options to reset the value of a toggle (or other) control - using it's Default property, and using its Reset property. In both cases, what needs to happen for the control to be notified is that the value of the property needs to change - if the value of the variable bound to the default property was set to true, for example, and you set it to true again, since nothing changed, then the control won't know that it needs to take action.

 

For example, if you have two toggle controls, whose default values are opposite. Their Default properties are set as follows:

Toggle1.Default: defValue
Toggle2.Default: !defValue

And if you want to always make the Toggle1 to be off (false) when the screen is shown, and the opposite for Toggle2, you need to make sure that the value of the `defValue` context variable is changed, which you can do by a couple of calls to UpdateContext:

Screen1.OnVisible: UpdateContext({defValue:true}); UpdateContext({defValue:false})

(In some languages, you'll need to use the two semicolons - ;; - to separate the two UpdateContext expressions)

In this case, anytime you get to the screen, the value of the context variable defValue will change (if it was false, it will become true, and then false again; if it was true the first operation doesn't do anything, but the second changes its value), and that will mean that all controls that have properties bound to that variable will be notified of its change.

 

This works, but you add a dependency between the toggle (default property) and the screen (on visible) that may not be necessary. A better alternative would be to use the Reset property in the control. This way you can set the default property of the toggles the value that you want (i.e., false on Toggle1, true on Toggle2 on the example above), and set the controls Reset property to a value that would be triggered by a screen change:

Toggle1.Default: false
Toggle1.Reset: resetToggles
Toggle2.Default: true
Toggle2.Reset: resetToggles
Screen1.OnVisible: UpdateContext({ resetToggles: true }); UpdateContext({ resetToggles: false })

In this case, since the value of the `resetToggles` context variable is changed (and momentarily becomes true), the controls will be notified that they need to be reset, and they do that by applying their default values again.

View solution in original post

Highlighted
Anonymous
Not applicable

Re: Reset toggle

Carlos,

 

Thank you for these options.  I used your last recommedation and that's exactly what I needed.

 

Regards,

JT

Highlighted
Helper III
Helper III

Re: Reset toggle

@KC

 

I used your function and it worked but I need to tweak it slightly and I'm hoping you can help. I uploaded a gif that shows me selecting the submit button, a popup group displays. I then click the cancel button and the popup disappears and the toggles are reset using your variable. I need the toggles to reset anytime that cancel button is involved.

 

On the CheckInScreen of my app I created the collection variable in the OnVisible property of the CheckInScreen, as you suggested:

ClearCollect(resetToggle,First(resetToggle).Value = false)

 

I set the reset property of my Toggle button to:

First(resetToggle).Value

 

Then I set the Cancel button OnSelect property to UpdateContext({VarOpenPopup:false});Clear(toggleValues);ClearCollect(resetToggle, true)

 

How do I continually reset the toggle no matter how many times the popup displays and the cancel button is pressed?2018-10-24_23-14-44.gif

Highlighted
Advocate II
Advocate II

Re: Reset toggle

Hi Carlos,

 

I try to implement your solution, but I do not understand why do you set "resetToggles" true and false in a row.

Can you explain it please ?

 

Screen1.OnVisible: UpdateContext({ resetToggles: true }); UpdateContext({ resetToggles: false })
Highlighted
Power Apps
Power Apps

Re: Reset toggle

The data flow PowerApps works when values are changed. If a variable has the value of 1, and we set its value to 1, then PowerApps doesn't notify any controls that depend on it to change their values - after all, it didn't change. That's the reason why we set it to true, and then to false - to force a change in value so that the control is reset.

Notice that since this answer was posted, there's now a Reset function that you can use to reset the control, instead of relying on variables for that.

Highlighted
Advocate II
Advocate II

Re: Reset toggle

Thx for your explenation !

 

Actually I did like this (using Reset function of toggle control) :

 

in a filter screen (for a gallery in another screen), if no checkboxes are checked, when user validate filter selection and go back to gallery customer list screen, the toggle "filter" in this screen is reset (to false) as nothing has been selected.

 

Validate button in filter screen :

image.png

 

Toggle button properties :

image.png

 

Is there a way to reset the toggle without passing through a variable from another screen ?

 

 

Thx in advance

 

Highlighted
Resolver I
Resolver I

Re: Reset toggle

Hi Carlos, I am not really sure I understand the workaround. In my case, my user has several toggle questions and when I navigate to another it resets all the toggles. The problem is, sometimes it happens sometimes it doesn't. 

 

Is Microsoft deploying a fix soon?

Helpful resources

Announcements
secondImage

New Return to Workplace

Reopen responsibly, monitor intelligently, and protect continuously with solutions for a safer work environment.

August 2020 CYST Challenge

Check out the winners of the recent 'Can You Solve These?' community challenge!

Experience what’s next for Power Apps

Join us for an in-depth look at the new Power Apps features and capabilities at the free Microsoft Business Applications Launch Event.

Check this Out

Helpful information

Featuring samples like Return to the Workplace and Emergency Response Applications

secondImage

Power Platform 2020 release wave 2 plan

Features releasing from October 2020 through March 2021

Top Solution Authors
Top Kudoed Authors
Users online (4,630)