cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
MrNappa
Kudo Collector
Kudo Collector

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
Super User 2 - 2022 Congratulations 768x460.png

Welcome Super Users

The Super User program for 2022 - Season 2 has kicked off!

Power Platform Conf 2022 768x460.jpg

Join us for Microsoft Power Platform Conference

The first Microsoft-sponsored Power Platform Conference is coming in September. 100+ speakers, 150+ sessions, and what's new and next for Power Platform.

<
Users online (4,148)