cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
MrNappa
Advocate V
Advocate V

Gallery question (lookup user, 'local' vs 'remote')

I have the following scenario:

  • In my app I want to display a gallery with a selection of entities
  • The gallery must display (among other fields) the name of the user who created the item
  • The last item in the gallery must be in view

 

For sake of illustration, let's say I want to display 'Accounts'. So, I add a Gallery to a screen and set the Items to "SortByColumns( Accounts, "createdon" )", and I add a label that displays ""Account name: "&ThisItem.'Account Name'&" -- Created by:"&ThisItem.'Created By'.'Full Name'". This works as expected. Now I want to set the last item into view, so I try setting the Default item to 'Last(Gallery1.AllItems)'. But, this doesn't work.

Next attempt: I initialize a local variable 'loadedAccounts' as such: 'UpdateContext({ accounts: SortByColumns( Accounts, "createdon" ) })'. Then I set the gallery source to 'loadedAccounts', and the Default to 'Last(loadedAccounts)' (*: note: it might take an intermediary variable that you can Blank() first in order for this to work in all cases). In this case, after loading the accounts, the 'proper' element is scrolled into view, but the user name stays empty!

 

Illustrated side by side:

gallery.png

 

My first question: in the first scenario, is there any way to set the 'Default' item in such a way that it works? 

My second question: in the second scenario, why does the 'default' way of retrieving the user name not work, and how can I work around it?

3 REPLIES 3
v-monli-msft
Community Support
Community Support

Hi @MrNappa ,

 

In the first scenario, the formula should be:

Last(SortByColumns( Accounts, "createdon" ,Descending))

 

Regards,

Mona

Community Support Team _ Mona Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.


@v-monli-msft wrote:

Hi @MrNappa ,

 

In the first scenario, the formula should be:

 

Last(SortByColumns( Accounts, "createdon" ,Descending))

 

 

Regards,

Mona


Thanks for the suggestion, Mona.

 

I tried this, but it doesn't work. Also, won't that do an additional load from the datasource? Which seems redundant, seeing the data is already present in the gallery.

So after more fiddling and research, I came to this conclusion:

 

  • Setting the gallery 'Items' to a CDS data source directly works. 
    Using some lookup value in the gallery template resolves as expected. E.g., "ThisItem.'Created By'.'Full Name'"
  • There is some magic involved though -- if you look at the Gallery.AllItems in the inspector, you will notice that the 'created by' column is empty.
  • If retrieving the data first into a collection ( ClearCollect ) or variable ( UpdateContext/Set ,as shown in example ), the inspector also shows that the 'created by' column is empty. In addition, the magic that happens in the other case is not present here
  • This is probably a bug, as referenced here and here?

In the end, I was forced to retrieve the data and use 'AddColumns' myself in order to fill the data properly (as referenced in the other thread). With the obvious drawback that modifying a record from that gallery becomes more complicated, too, again.

Helpful resources

Announcements
PA User Group

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group

secondImage

Demo Extravaganza is Back!

We are excited to announce that Demo Extravaganza for 2021 has started!

MBAS on Demand

Microsoft Business Applications Summit sessions

On-demand access to all the great content presented by the product teams and community members! #MSBizAppsSummit #CommunityRocks

Power Apps June 2021

June Power Apps Community Call

Did you miss the call? Check out the recording here!

Top Solution Authors
Top Kudoed Authors
Users online (29,972)