cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Greg27
Super User
Super User

How to change and assign values and display values in fields

OnStart of my app, I am checking to see if the current user is part of one of three security groups. Depending on which security group they are a part of will determine which fields are editable or viewable and what will be displayed in a specific text field. For example... If I look up the current user, I check to see if they are in a traditional undergrad student security group in Azure AD. If they are, I want to change the Student's email field to be view only. I would like to grab the name and email address from Azure AD and populate those fields.

If the current user is in the Staff security group in Azure AD, then I want the email address field to be editable, allow them to enter a student's email, and look the user up by email address in Azure AD and grab the student's name and populate the Student's Name field with it.

31 REPLIES 31
BCLS776
Super User
Super User

To do this as seamlessly as possible in your app, I recommend doing a few things in the OnStart of your app:

  • Query the AzureAD connector and store the returning record (you can decompose it into email, name, etc. now if you like) in a variable or collection you can use throughout your app. Storing it now saves querying the connector (with associated delays) later on.
  • Set a global variable that defines the role of the current user. Consider using a boolean value, such as varIsStudent = true, which simplifies some of the other logic you'll use to control text entry

Once you've done that, you can use these variables in your app as necessary. A textinput box can be made view only for students with a statement like this in the DisplayMode property:

If(varIsStudent, DisplayMode.View, DisplayMode.Edit);

 

Alternatively, it may make for a cleaner app to have completely separate screens for different roles. In that way, you know only the intended user is getting access to that entire screen. Again, this can be controlled with the varIsStudent variable.

 

Hope that helps,

Bryan 

_________________________________________________________________________________________
Help the community help more users by choosing to "Accept as Solution" if this post met your needs. If you liked the post and want to show some appreciation, please give it a Thumbs Up.

@BCLS776 

Bryan,

Does it make sense to store the record if I am only needing 2 fields stored? Does it really make sense to create a 2nd form if the only difference between the 2 is whether the email address field is viewable or editable, and how how the full name is populated?

 

If it makes more sense to create a new form for that, is there an easy way to copy my current form to a second form?

 

If I should keep it to one form, do I just set local variables to equal each field I need and then use those variables in each field? I haven't done much in the way of variable usage and multiple commands in a single statement. What would it look like?

BCLS776
Super User
Super User

For two fields, it's probably a wash for effort for which way you go. And it is always the developer's decision in the end.

 

You can copy-paste entire controls in Power Apps and it will rename the copy for you.

 

Yes, set at least the Default property of the form card to the value from the variable you want to use to pre-populate. If you want to control the edit-ability of a control, use an If() statement on its DisplayMode property to toggle it between DisplayMode.Edit and DisplayMode.View.

 

Bryan 

_________________________________________________________________________________________
Help the community help more users by choosing to "Accept as Solution" if this post met your needs. If you liked the post and want to show some appreciation, please give it a Thumbs Up.

The field I am trying to change between Edit and View is DataCardValue2. In my IF() statement on OnStart of the app, I am using the following statement:

 

If(User().Email in Concat(AzureAD.GetGroupMembers("StaffGroupID").value,mail), DataCardValue2.DisplayMode.Edit, DataCardValue2.DisplayMode.View);

 

However, it doesn't make the field editable, even though the result of the IF statement should be true.

You will need to put this If() in the DisplayMode property of the card itself:

If(User().Email in Concat(AzureAD.GetGroupMembers("StaffGroupID").value,mail), DisplayMode.Edit, DisplayMode.View);

 
_________________________________________________________________________________________
Help the community help more users by choosing to "Accept as Solution" if this post met your needs. If you liked the post and want to show some appreciation, please give it a Thumbs Up.

It doesn't seem to like this in the DisplayMode property of the card.

Can you share the error message? It is more likely having problems with the condition in the If() statement than being in the DisplayMode property.

_________________________________________________________________________________________
Help the community help more users by choosing to "Accept as Solution" if this post met your needs. If you liked the post and want to show some appreciation, please give it a Thumbs Up.

Is there an easy way to get the error messages? I can select the App Checker, but it's not easy to see all of them at once.

 

Here is a screenshot of my App Checker:

 

Greg27_0-1633530214613.png

 

Let me know if you want me to drill into any of them or if there is a way to display them all in one larger screen.

BCLS776
Super User
Super User

That points to a couple of errors we should check, one in the card and one in your OnStart. There should be a little red X symbol on your card and if you activate its dropdown you will see a choice to "Edit in the formula bar". Select that and the problem code should be highlighted with red lines above. Copy/paste that, including all the red, which will help us troubleshoot.

_________________________________________________________________________________________
Help the community help more users by choosing to "Accept as Solution" if this post met your needs. If you liked the post and want to show some appreciation, please give it a Thumbs Up.

Helpful resources

Announcements
Power Apps News & Annoucements carousel

Power Apps News & Announcements

Keep up to date with current events and community announcements in the Power Apps community.

Community Call Conversations

Introducing the Community Calls Conversations

A great place where you can stay up to date with community calls and interact with the speakers.

Power Apps Community Blog Carousel

Power Apps Community Blog

Check out the latest Community Blog from the community!

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