cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
ericonline
Community Champion
Community Champion

Select Item in Gallery OnSelect

When I insert a button into a Gallery, the OnSelect property of the button is automatically set to Select(Parent). I don't want a button in every row of my vertical Gallery. 

 

Instead I want user to click the row of the Gallery, then click a button outside the Gallery to execute OnSelect functions.

 

How do I reference a Gallery row and all its contents when clicked? 

 

Thanks

1 ACCEPTED SOLUTION

Accepted Solutions

In your case, you would have the gallery Items property set to your SharePoint list, then when you click the button outside that gallery, you would have an expression similar to the one below:

Navigate(
    EditScreen,
    ScreenTransition.Fade,
    { itemToEdit: Gallery1.Selected });
EditForm(EditForm1)

On the other screen, you would have the edit form control (called EditForm1) with the DataSource property set to the same SharePoint list, and the Item property set to 'itemToEdit'. When the user clicks the button, it will navigate to the second screen, passing to the context of that screen the value of the selected item in the gallery (in the variable called 'itemToEdit'). When that value is set as the Item property of the form, then the object properties will be displayed so that the user can continue filling the values for the properties.

View solution in original post

20 REPLIES 20
CarlosFigueira
Power Apps
Power Apps

You cannot reference directly an arbitrary row in the gallery (*), but you can reference the selected row in that gallery via the Selected property.

 

Take a look at the attached app; the Selected property in the gallery contains the entire object that is bound to that row, so you can access its properties outside the gallery.

 

(*) You can also access an arbitrary row in the gallery (by index) using the AllItems property of the gallery, and the FirstN/Last functions to retrieve the item at the desired index.

Thank you @CarlosFigueira. When trying to import the app you sent I get: 

 

2018-07-02_10-26-03.png

I saved the app as a .msapp file and compressed it. If you uncompress it, then open that file, you should be able to see it.

Hm. Yeah I associated .msapp files with VS Code because I was dissecting / debugging them. I'm not sure how to reassociated them with PowerApps as its a web app and not stored locally (that I know of). 

 

I can't seem to use "Open With" and select PowerApps as I can't find it on my local machine. 

If you are in the PowerApps Studio, you can select Open -> Browse, then select the file to be opened.

 

OpeningMsappFile.gif

Got it. Ok, so now I see what you are doing: 

 

  • Create a Collection OnSelect of Button1
  • Display Collection in the Gallery
  • Displaying an item in the Gallery OnSelect of Button2

 

Hm. I'm not sure this translates to my use case. 

 

  • I have a Gallery based on a Sharepoint list
  • Each record in the Sharepoint list is a partially completed Form
  • I want to click the Gallery row, then click a Button outside the Gallery
  • And have the selected form display on the next screen

User would then complete the remaining fields of the form, click Submit and I'll either Patch or SubmitForm from there. Can you show me how to translate your solution to that end? 

 

 

Eric - In this video I show you how to make the whole row in the Gallery selectable.  Which I think gets you where you want to go. Really, if you haven't watched my whole series on Repeating Tables in PowerApps I think you would enjoy it.

Shane - Microsoft MVP, YouTube, and PowerApps Consulting for when you are in a bind to get this fixed quickly. And finally we now have PowerApps Training

In your case, you would have the gallery Items property set to your SharePoint list, then when you click the button outside that gallery, you would have an expression similar to the one below:

Navigate(
    EditScreen,
    ScreenTransition.Fade,
    { itemToEdit: Gallery1.Selected });
EditForm(EditForm1)

On the other screen, you would have the edit form control (called EditForm1) with the DataSource property set to the same SharePoint list, and the Item property set to 'itemToEdit'. When the user clicks the button, it will navigate to the second screen, passing to the context of that screen the value of the selected item in the gallery (in the variable called 'itemToEdit'). When that value is set as the Item property of the form, then the object properties will be displayed so that the user can continue filling the values for the properties.

Ok. I'm getting there. @Shanescows, the video was helpful. 

 

  • I'm now able to select a row in the Gallery
    • Changed Template fill to: 
      • If(
        ThisItem.IsSelected,
        blue,
        gray)
    • Changed OnSelect to: 
      • UpdateContext({varHasBeenSelected: true})
  • I'm having trouble with the Form showing the selected Row. 
    • So far I've tried setting the Form Item Property to the three options below, but no success:
      • Filter(
            'Sharepoint List',
            ID = gallery.Selected.ID)
        • Error: This expects Record values but produces incompatible Table values.
      • gallery.Selected
        • No Error, but all Form fields are blank. 
      • varHasBeenSelected
        • Error: Invalid Formula. Expected a value compatible with 'Data Source'.
  • Any other ideas? I don't want to use two Galleries, just the one. 

Thanks! 

Helpful resources

Announcements
October Events

Mark Your Calendars

So many events that are happening this month - don't miss out!

Ignite 2022

WHAT’S NEXT AT MICROSOFT IGNITE 2022

Explore the latest innovations, learn from product experts and partners, level up your skillset, and create connections from around the world.

Power Apps Africa Challenge 2022

Power Apps Africa Challenge

Your chance to join an engaging competition of Power Platform enthusiasts.

Users online (4,327)