cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
wedwards
Level: Powered On

Detail Record Card Switches After Use of "Patch"

AcceptDate.jpgAccept Date

 

 

I am experiencing a strange behavior.  On my Edit Detail card, I have added controls to populate a date in SharePoint Online.

The user must choose a toggle button which make the "Accept" button enabled.  Using the "On Select" property enables the date to be saved to the data source.  The date is saved successully, however after I patch the record the user detail field goes the first record instead of staying on the record that is currently selected.

 

Patch(ActiveUsers,First(Filter(ActiveUsers,BrowseGallery1.Selected.DistinguishedName = DistinguishedName)), {MoveDate: MoveDatePicker.SelectedDate + Time(Value(HourDropdown.Selected.Value), Value(MinuteDropdown.Selected.Value), 0)})

 

I cant determine how it is possible but the only thing differrent is the addition of the Patch that is executed.  Anyone have ideas on why my detail card switches from the current record to the first record?  What might be a workaround to keep the current record the current record?

 

Thank you,

 

 

W.

1 ACCEPTED SOLUTION

Accepted Solutions
wedwards
Level: Powered On

Re: Detail Record Card Switches After Use of "Patch"

I found a solution.  It is an extension of JoshHoughton's idea.  I've been testing this for over an hour, trying to come up with scenarios where this would fail and could not produce one.  JoushHoughton passed a record as a context variable and used it in the Item on the detail form. If you updated the record in the background using patch, it could not be reflected in the detail form.

 

Passing a unique identifier for the record and then utilizing it to obtain the actual record, it works without fail.  After the patch, the form stays with the current record and the updates are reflected in the form.

 

NextArrow

OnSelect = Navigate(DetailScreen1, ScreenTransition.None, {CustomRecordSelected: BrowseGallery1.Selected.DistinguishedName})

 

DetailForm1

Item = First(Filter(ActiveUsers,CustomRecordSelected = DistinguishedName))

 

BrowseGallery1.Selected.DistinguishedName uniquely identifes this record and is stored in CustomRecordSelected

 

See the illustrations below

 

I hope this helps other.

 

Thanks to JoshuaHoughton.  His initial idea got this ball rolling.

 

 

W.

 

 

 

RecordChangeSolutione-Part1.jpgOvercome Record Change Bug Part 1 

RecordChangeSolutione-Part2.jpgOvercome Record Change Bug Part 2

 

 

 

 

View solution in original post

11 REPLIES 11
Community Support Team
Community Support Team

Re: Detail Record Card Switches After Use of "Patch"

Hi wedwards,

 

I’d like to know more details about “however after I patch the record the user detail field goes the first record instead of staying on the record that is currently selected”.


Could you show me more details about this situation?

 

I have created an app based on your description, the function I am using on my side is:

Patch(ProjectEmail,First(Filter(ProjectEmail,Title=BrowseGallery1.Selected.Title)),{h4kv: DateValue1.SelectedDate+Time(Value(HourValue1.Selected.Value),Value(MinuteValue1.Selected.Value),0)})


When I click the button to patch the date time to data source, it saved properly and seems that I don’t get the issue “the user detail field goes the first record instead of staying on the record that is currently selected”.


The date time field displays properly on all of the three screens, BrowseGallery, DisplayScreen, EditScreen.

 

Could you please try it again with the function and feel free reply if you are still having the issue.

 

Best regards,
Mabel Mao

Community Support Team _ Mabel Mao
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
wedwards
Level: Powered On

Re: Detail Record Card Switches After Use of "Patch"

 

>> Could you show me more details about this situation?

 

AcceptDate-Deactivated.jpgInactiveAcceptDate-Activated.jpgActiveActiveUserCard.jpgDetailCard

(this changes from the current record to the data from record number one, after I choose "Accept")

 

 

I have a BrowserGallery and a DetailScreen and have removed (deleted) the edit screen and hidden the edit icon on the edit screen because I did not want the records edited by the users, except for the date field.  The date is the only user modifiable interface.

 

The user can modify the date but can only accept the date after first turning the toggle button on, which enables the "Accept" button.  If the toggle button is turned off, the "Accept" button is disabled.

 

The purpose is to ensure the user must actively consent and "Accept" the date.  This keeps me from having to put up a dialog, asking "Are you sure you want to accept this date?" It wasn’t accidentally accepted.

  

Once the user clicks "Accept" using the "OnSelect" property, I patch the record on SharePoint.  I see the progress dots go across the screen for a few seconds, the screen flashes momentarily with the same user record.

A few seconds later,  ( From the appearance, after the patch has completed) the screen begins to update but instead of showing the same record, the details for record number one show up.

 

Interestingly, the correct record is updated but it is confusing to see the details for record one appear after updating another.

 

Patch(ActiveUsers,First(Filter(ActiveUsers,DistinguishedName=BrowseGallery1.Selected.DistinguishedName)), { MoveDate: MoveDate.SelectedDate + Time(Value(HourDropdown.Selected.Value), Value(MinuteDropdown.Selected.Value), 0)})

 

My Patch statement appears to be identical (in form) to yours.  I initially had the filter condition as BrowseGallery1.Selected.DistinguishedName=DistinguishedName but just in case (I didn’t see how it would make a difference)  I swapped the order to DistinguishedName=BrowseGallery1.Selected.DistinguishedName

 

Thank you,

 

 

W.

wedwards
Level: Powered On

Re: Detail Record Card Switches After Use of "Patch"

After looking for more information on this issue I found another user who is experiencing the same behavior.

 

https://powerusers.microsoft.com/t5/PowerApps-Forum/SubmitForm-command-changes-Gallery-Selected-item...

 

User JoshHoughton provided a workaround (see above link).  The workaround does work, however the Calendar control on the page visibly stays the same my the view (it should) but something changed in the background because the text that matches the selected calendar control changed to reflect todays date which is the default value of the calendar.

 

 

 

 

ChangeDate.jpgDate doesnt match after update

 

 

This is my TEXT property for the selected label.

 

Text(ChangeDatePicker.SelectedDate + Time(Value(HourDropdown.Selected.Value), Value(MinuteDropdown.Selected.Value), 0), "[$-en-US]ddd, dd mmm yyy, hh:mm am/pm")

 

I would like this to execute without a workaround but in the interim, would someone have an idea of what I might do to ensure the text display matches the date chosen, even after the update?

 

Thank you,

 

 

W.

 

 

sfishe
Level: Powered On

Re: Detail Record Card Switches After Use of "Patch"

I think I'm having the same or very similar issues when using Patch(). I intend to make a new forum post on here describing the issue, although as my situation is a bit complex it'll take me awhile to write out a proper explanation. Was just wondering, before I type it all out, did you find any new info/workarounds?

wedwards
Level: Powered On

Re: Detail Record Card Switches After Use of "Patch"

Unfortunately, I have not.  I spend most of the day yesterday trying to come up up with a solution.  I was willing to entertain oddball solutions.  If you navigate to the previous screen and reselect the record, it is up to date. 

 

Knowing this, I tried a hostile exercise of programmatically navigating back and redisplaying the card but (unless I did something wrong) it didnt work.  It appears that Patch is Asynchronous, so placing a command directly after the patch can (and in my case does) occur before the patch completes.

 

https://powerusers.microsoft.com/t5/PowerApps-Forum/SubmitForm-command-changes-Gallery-Selected-item...

 

Currently the best workaround is the post by JoshHoughton on the above link.  The solution is lets say 99% effective.  It keeps you on the selected record but something is happening after the patch in the background that appears to be causing a reset of of the edit form or something like a reset.  I placed a refresh icon on the page (as a test) and performed a Refresh (after the patch) and so the form should have updated with the most recent data that was patched into the SharePoint list but that didnt happen. 

 

Sadly, the customized card that has controls whose valuest do not come from the parent are not updated.  They maintain the values they had prior to the patch.  This is why I say that JoshHoughton workaround is 99% effective.

 

 

W.

 

wedwards
Level: Powered On

Re: Detail Record Card Switches After Use of "Patch"

I found a solution.  It is an extension of JoshHoughton's idea.  I've been testing this for over an hour, trying to come up with scenarios where this would fail and could not produce one.  JoushHoughton passed a record as a context variable and used it in the Item on the detail form. If you updated the record in the background using patch, it could not be reflected in the detail form.

 

Passing a unique identifier for the record and then utilizing it to obtain the actual record, it works without fail.  After the patch, the form stays with the current record and the updates are reflected in the form.

 

NextArrow

OnSelect = Navigate(DetailScreen1, ScreenTransition.None, {CustomRecordSelected: BrowseGallery1.Selected.DistinguishedName})

 

DetailForm1

Item = First(Filter(ActiveUsers,CustomRecordSelected = DistinguishedName))

 

BrowseGallery1.Selected.DistinguishedName uniquely identifes this record and is stored in CustomRecordSelected

 

See the illustrations below

 

I hope this helps other.

 

Thanks to JoshuaHoughton.  His initial idea got this ball rolling.

 

 

W.

 

 

 

RecordChangeSolutione-Part1.jpgOvercome Record Change Bug Part 1 

RecordChangeSolutione-Part2.jpgOvercome Record Change Bug Part 2

 

 

 

 

View solution in original post

Highlighted
sfishe
Level: Powered On

Re: Detail Record Card Switches After Use of "Patch"

Thanks wedwards! (and JoshHoughton)

 

This solved my issue too, at least partially. I was also having the same type of problem when creating a new record on the affected gallery. If I made the new record without filling in the field that the gallery sorts by PowerApps would fill the form with an existing recording after the SaveForm.

 

To get around this I used a context variable I was already using for the SaveForm function to Patch only NewForm situations/modes, and the Last() function in the Item property to force PowerApps to display the latest record, which should always be the newly created one. Described below...

 

My "new record" button is:

NewForm(FormEditCell); Navigate(EphysExpCell, None, { patchLookupEphysCell: true })

And the Item property of the detail form is:

If (patchLookupEphysCell = true, Last('Exp Slice Ephys Cells 2'), First(Filter('Exp Slice Ephys Cells 2',CellSelected = ID)))

And I set the context variable to false when leaving that screen via the Cancel/Back or Delete buttons:

UpdateContext({patchLookupEphysCell: false})

 

An annoyance that still remains is that I can often see PowerApps refreshing the form - showing the wrong or old data first before the above functions get applied. We really shouldn't have to be doing these types of workarounds...

 

JoshHoughton
Level: Powered On

Re: Detail Record Card Switches After Use of "Patch"

Thanks for the special mention everybody 🙂 Does this mean I will be famous now? lol

eag768
Level: Powered On

Re: Detail Record Card Switches After Use of "Patch"

Thanks so much! You win at life! 🙂

Helpful resources

Announcements
thirdimage

Power Automate Community User Group Member Badge

Fill out a quick form to claim your user group badge now!

sixthImage

Power Platform World Tour

Find out where you can attend!

Power Platform 2019 release wave 2 plan

Power Platform 2019 release wave 2 plan

Features releasing from October 2019 through March 2020

fifthimage

Microsoft Learn

Learn how to build the business apps that you need.

Top Kudoed Authors
Users Online
Currently online: 401 members 4,439 guests
Please welcome our newest community members: