I've been struggling with this issue where the Browser Gallery Selected Item is not displaying the correct selected item. It is reverting back to the first Item on the list... but not really... Bare with me, please 🙂
Here are the "Gallery items":
Once selected, I have a display form showing the record details. The attachment below: "Record Details"
When I view another vessel it displays everything the first record did, however, the status field which is a choice field and the Vessel Name are correct. as seen in "Record details 2", I do have an Upper() on the vessel Name and I believe that's why it is displaying correctly. I can't explain why the status field is working correctly as the cargo is also a choice field however a multi-select choice field(Not working). but this leads me to believe that the correct item is being selected otherwise we would not have the status and vessel name change. I have confirmed both records of data are different. I am using a SharePoint list to store the data.
Now I must state that this app is working perfectly in the web designer with no issues. only the Published version is having issues loading the correct data relating to the Display Form.
(Info) When Navigating from the gallery to the Display form, I do Navigate to another screen. I Select(Parent); Navigate to "Screen 2"
When I navigate back to my screen 1 I see the data in the form flicker to the first entry in the gallery before getting taken back to the first screen. it is almost like the Display form is stuck on the first entry it loads and only shows updated fields that the Screen 2 forces Example: an Upper(Parent.Default)
Please let me know any suggestions you may have. I hope this made sense 😞
Thank you in advance ❤️
Solved! Go to Solution.
The following worked for me...
I set the selected record to a variable:Set(selectedRecord,ThisItem)
Then I set the form's Item property one of two ways:LookUp(datasource,PrimaryKey=selectedRecord.PrimaryKey)
That being said, I do not think this is an acceptable work around. Why does the Gallery.Selected logic work in the designer, but not out of the designer? This is definitely a bug that needs to be worked out by the PowerApps team. Like @SnowFlake said, the versions between the designer and live do not match up, so there is definitely something wrong between the 2 versions.
Thank you most kindly for getting back to me.
I tried adding in a refresh() onto the button to the next screen to no avail. It would revert to the first item in the gallery.
My gallery filters records based on if the user signed in is assigned to that record. This does produce a delegation warning however there will only ever be 20 records or so.
My Browser gallery items:
SortByColumns(Filter('Job Sheet',StartsWith(Vessel,TXTSearchbox.Text),Or(Status_x0020_Text="Awaiting Vessel",Status_x0020_Text="In Progress"),Or(User().Email in Surveyor.Email,User().Email in Client_x0020_Name.Email)),"Vessel",If(SortDescending1,Descending,Ascending))
My Gallery button is as follows: Refresh('Job Sheet');Select(Parent);Set(JobNum,BG_JobSheet.Selected.ID); Navigate(SCR_JobDetails, ScreenTransition.Cover)
Could this be the reason when there is a refresh() in my button that it reverts to the first Item in the list? as its losing that gallery of Items when going to the next screen?
Without the Refresh() on the Gallery Button, the app works perfectly in the designer. with it/ the app breaks in the designer as well (It reverts to the first Item on the list)
*I am not using the "Jobnum" Variable yet, that's if I can't get this working with a display form.
I, unfortunately, cannot add a Resetform() as this is a display form giving this issue. it returns an error: "This function requires an editable form as its input"
This is a weird one 😞
Thank you for your assistance Dang in advance
Just an update, I can confirm moving the display form to the screen where the Browser gallery is, solves the issue. this issue has something to do with the display form being on another screen. I can't keep it on the same screen as I don't have the realty space on the app I was just troubleshooting 😞
How have you configured the "Item" property of the display form?
The pattern I prefer is to set the selected item in the gallery to a variable. Then I have the form reference that variable as the item it is currentlly displaying.
Firstly, Thank you for your ongoing support with this issue.
I am using Browser Gallery.selected in the Display Form Items.
Also after more testing, the Display form looks to only break when the app is started as if I go back to the Gallery and select a different Item the display form corrects itself.
Just to be a bit more clear: I arrive on the app looking at the gallery. I then select an Item and view more details about the record. when arriving the gallery shows the first item selected (I underline the Item name that's selected ). I select another Item in the gallery(It now shows selected) and navigate to the display form.
I have used lookups with labels to get the information correct and still the first item selected when using the app reverts to the first on the list, no matter what I selected. (Gallery.selected= seems to be the issue). When I go back to the gallery and select another item the app works perfectly.
So what I did was make a variable of my gallery items and make it an onstart Set().
I have lost my ability to sort my gallery with a button as the sort function was a variable and I can't have a variable within a variable. small issue compared to this post but any idea how to get around it?
I am still testing if the Gallery as a variable is a viable solution and if anything breaks due to this method.
I will revert within the day 🙂
I have never tried your method "The pattern I prefer is to set the selected item in the gallery to a variable. Then I have the form reference that variable as the item it is currently displaying." is there a reason why you don't use gallery.selected method for items?
Thank you most kindly
We are having this exact same issue with galleries. I submitted a support ticket yesterday and have yet to hear a response. They are usually pretty good at getting back to me in a timely matter, but not this time. I hope it is a known issue that Microsoft is trying to correct.
I believe that I just narrowed down the issue. If I remove the Filter on the gallery Items, the data for the item that I select is correct.
Looks like we might have to figure out a workaround on the display screen, since we need the filter on the gallery.
I notice that in your filter you compare a column against a searchable text field. Is the text in that field reset upon arriving to or leaving the screen? If so, that will cause the gallery to reset and bring itself to the top.
SortByColumns( Filter('Job Sheet', StartsWith(Vessel,TXTSearchbox.Text), Or( Status_x0020_Text="Awaiting Vessel", Status_x0020_Text="In Progress" ), Or( User().Email in Surveyor.Email, User().Email in Client_x0020_Name.Email ) ), "Vessel",If(SortDescending1,Descending,Ascending) )
As a best practice, I would set the User()'s information to a variable that you can reference anywhere you want.
Although the results of User() do not really change, it does need to be determined for each row in your filter.
So in the OnStart of your app, you may have a statement like this:
Then for every instance of User(), you would replace it with userInfo.
That being said, I also notice your filter contains an 'in' statement. Note that the results of your filter would not be delegable at the level of the datasource, so it may not return the complete result of what you're trying to filter. Instead of using 'in', I would change the condition to equals.
Can you make these changes and let me know the results?
SortByColumns( Filter('Job Sheet', StartsWith(Vessel,TXTSearchbox.Text), Or( Status_x0020_Text="Awaiting Vessel", Status_x0020_Text="In Progress" ), Or( Surveyor.Email=userInfo.Email, Client_x0020_Name.Email=userInfo.Email ) ), "Vessel",If(SortDescending1,Descending,Ascending) )