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

Why we can not use Navigate() in OnVisible

In my app I have a screen which acts as a loading screen and verifies that information is retrieved correctly from the server. 

 

For example here is a very simplified version of the OnVisible:

 

UpdateContext({LoadingText:"Searching for your name..."});
Set(
    _UserProfile,
    Office365Users.MyProfile()
);
If(
    !IsBlank(_UserProfile),
    Navigate(MainMenu_Screen,None),
    UpdateContext({LoadingText:"Failed to load your profile. Please restart the App"})
)

Having this function I get red line under Navigate which reads like this:

 

 

Navigate cannot be used here since it would always navigate away from this screen.

1.png

 

This error makes no sence since it would always navigate only if the IF condition is true. Can this limitation be removed please?

 

Work around

There is a simple workaround with using a button or any other control with OnSelect property and calling the Select(YourButton) to execute the Navigate() function.

 

For example, add a button and change its OnSelect to:

Navigate(MainMenu_Screen,None)

Now in the OnVisible property change your code to this:

UpdateContext({LoadingText:"Searching for your name..."});
Set(
    _UserProfile,
    Office365Users.MyProfile()
);
If(
    !IsBlank(_UserProfile),
    Select(Button1),
    UpdateContext({LoadingText:"Failed to load your profile. Please restart the App"})
)

Now it works as intended but you had to create some extra controls.

 

11 REPLIES 11
Meneghino
Level 10

Re: Why we can not use Navigate() in OnVisible

Why not use the OnStart property to navigate?

Anonymous
Not applicable

Re: Why we can not use Navigate() in OnVisible

The problem with OnStart is that it will load everything in the background making the user wait quite a while staring at a blank screen. With this I can show users changing text messages so that he knows that something is happening in the background and will not be as annoyed with wait times as he would otherwise. 

Meneghino
Level 10

Re: Why we can not use Navigate() in OnVisible

Ok, understood.  Then I guess the only way is to use a timer to check every 3 seconds or so and navigate if found and after 10 tries navigate to restart message.

Microsoft Employee

Re: Why we can not use Navigate() in OnVisible

I agree that this seems to be a valid use of OnVisible, and shouldn't be blocked. I'll bring this up with the team to revisit and possibly remove this error message.

Microsoft Employee

Re: Why we can not use Navigate() in OnVisible

Looking more into this, it looks like the original intention was to prevent making an app that gets into an irreparable state. If you had Screen1.OnVisible = Navigate(Screen2), then it would be impossible to edit the rule. As soon as the author clicks on Screen1, they would immediately be redirected to Screen2, and so be unable to repair the bad OnVisible rule.

 

I still agree that the error is overzealous, but I hope this gives you an idea why it exists. In the future, we should have a better division between authoring and published app functionalities, and at that point it would be possible to relax this. Until then, the WYSIWYG architechture makes Navigates on OnVisible a dangerous functionality for authors.

 

I'm still bringing the issue up with the team to continue tracking this use case. Thanks for bringing it to my attention!

TimRohr
Level 10

Re: Why we can not use Navigate() in OnVisible

I just ran into this error today. Has there been any movement on this request?

 

Here's another use case:

A "clearing house" screen that can bridge customized page navigation and the lack of "stored procedures".

 

Every page that required certain validation (or, say, if you wanted to change/randomize the next screen based on some user input -- directing 'YES' answers to one screen, 'NO' to another, though with much more complexity), would have their navigation button pointing to the ClearingHouse screen.

 

The ClearingHouse screen would then be a central repository of validation, forwarding the navigation on based on the current validation conditions/rules.

 

Without that, if new validation rules begin to layer on the others, many screen's navigate() functions would have to be updated.

 

I don't want the ClearingHouse to be seen... I just want the user to pass through to the next screen they need.

Asimansari
Level: Powered On

Re: Why we can not use Navigate() in OnVisible

Hi everyone,
Wanna tell something I encountered to everyone.
I set the onvisible property to select a control which loads data then navigates. Now I am unable to edit the screen in powerapps web. Because as soon as i select the screen to edit, it navigates. This is a serious bug, the screen shouldn't autonavigate while editing.
Now i have to restore the last version to work at all.
Super User
Super User

Re: Why we can not use Navigate() in OnVisible

I do all of mine with a basic Home Screen that has a simple text field that pulls in the current user so it loads fast. If that text field is blank they can't move forward. 

 

I know this is not what you are asking but this works good for me and loads fast. My Home Screen is real basic that loads at first to get them started.

 

Capture.JPG

Highlighted
HadynM
Level 8

Re: Why we can not use Navigate() in OnVisible

Hi @Asimansari

I have run into this before and the simple solution is to delete the control with the navigate function.  This will take you to the screen, then you can ctrl+z (Undo) to put it back.  Now you are on the screen in edit mode and can make changes.

To work around this in apps that have a loading screen I usually put a checkbox on a 'settings' screen, that if checked won't do the navigation.

Hope that helps

Hadyn

Helpful resources

Announcements
thirdimage

Power Automate Community User Group Member Badge

Fill out a quick form to claim your user group badge now!

sixthImage

Power Platform World Tour

Find out where you can attend!

Power Platform 2019 release wave 2 plan

Power Platform 2019 release wave 2 plan

Features releasing from October 2019 through March 2020

fifthimage

Microsoft Learn

Learn how to build the business apps that you need.

Top Kudoed Authors (Last 30 Days)
Users online (4,983)