cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Yahya
Level 10

Referring to a Control via a formula?

Is this possible in PowerApps? 

 

For instance I have 2 screens, (named ScreenA and ScreenB) want to have same button in both screens, to navigate, is this possible?

 

On Select: Navigate (ScreenVAR,fade,done)

 

while onload for ScreenA has: Set (ScreenVAR, "ScreenA")

 

and onload for ScreenB has: Set (ScreenVAR, "ScreenB")

 

14 REPLIES 14
Eickhel
Level 8

Re: Referring to a Control via a formula?

Hey, 

 

As far as I know, every screen has their own set of controls so an easy way could be just copying the button to each screen and then change their OnSelect or go your way:

 

ScreenA - OnVisible: Set(ScreenVAR, "ScreenB")

-- ButtonA: OnSelect: Navigate (ScreenVAR,fade,done)

 

ScreenB - OnVisible: Set(ScreenVAR, "ScreenA")

-- ButtonB: OnSelect: Navigate (ScreenVAR,fade,done)

 

Is this what you wanted to accomplish?

Yahya
Level 10

Re: Referring to a Control via a formula?

Hi @Eickhel, agreed they are 2 different buttons but i meant they have the same formula. 

 

The below does not seam to work because of the topic of this discussion: Referring to a control via a formula? is this possible?

 

If you look at my PowerApp screenshot, at the left, the side menu used to be buttons, but imagine buttons for +40 screens. I developed the menu eventually via a Gallery, and i was sucessful automate the formula to take me to the right screen via gallry on select.

 

this is a the on select formula for the menu gallery 

 

If(ThisItem.ecds_screenname="ScreenHome",Navigate(ScreenHome,ScreenTransition.Fade),If(ThisItem.ecds_screenname="ScreenProject",Navigate(ScreenProject,ScreenTransition.Fade),If(ThisItem.ecds_screenname="ScreenProjectDetails",Navigate(ScreenProjectDetails,ScreenTransition.Fade))))

 

As you see, it is manually done, and this covers 3 screens only. I know I can use excel Concatenate to buld the formula for all screens, but i was thiking use a column in the gallery so my formula would be then super easy:

 

ScreenHomeOn Visible: Set(CurrentScreen,"Home")

ScreenProject On Visible: Set(CurrentScreen,"Project")

etc.

 

Menu Gallery OnSelect: Navigate(CurrentScreen, Fade, none)

 

The issue is that OnSelect is not dealing with the variable CurrentScreen as ScreenName. I used Text(CurrentScreen), same.

Yahya
Level 10

Re: Referring to a Control via a formula?

I think this would work if a control has a Name property then a variable can be assigned. i will be happy if there is another way.

Yahya
Level 10

Re: Referring to a Control via a formula?

Hi @Eickhel, Thanks.

 

The problem is that in the proposed formula of 

 

Switch( ThisItem.Random,
"Screen1",Navigate(Screen1, Fade),
"Screen2",Navigate(Screen2, Fade),
"Screen3",Navigate(Screen3, Fade),
"Screen4",Navigate(Screen4, Fade)
)

 

I have to call ScreenName for each option. And my objective is to calling screenname via a formula, so i dont make the furmula very long.

 

But it does not seams to be working

Eickhel
Level 8

Re: Referring to a Control via a formula?

True but what about the another proposed solution?

 

https://powerusers.microsoft.com/t5/General-Discussion/Navigate-to-screen-selecting-element-from-the...

 

It uses a collection of screens.

Yahya
Level 10

Re: Referring to a Control via a formula?

This might be the start to finda way, thanks for sharing! and thanks for being there..

 

link solution says

If you are using a dropdown or listbox control for the screen selection, please do the following:

 

    Dropdown1.Items = [Screen1, Screen2, Screen3]

    Dropdown1.OnChange = Navigate(Dropdown1.Selected.Value, Fade)

 

I tried the easy scenario for testing: 

the seconf line of the code gives an error: "The function 'Navigate' has some invalid arguments"

Eickhel
Level 8

Re: Referring to a Control via a formula?

OK, I think I got a way. First I created a collection with all the screens of this test app (keep in mind the @):

 

ClearCollect(Screens,[[@FormScreen1],[@Screen1]])

Then I created a button with this code in the OnSelect:

Navigate(Last(Screens).Value, ScreenTransition.None)

It's working.

 

You need to change the logic for when or where to navigate... but I think this might work for you.

Yahya
Level 10

Re: Referring to a Control via a formula?

Hi again my friend @Eickhel. not seams to be working 😞

 

if you are sure can you package for me the test app?

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,568)