web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Apps / Problem with Power App...
Power Apps
Answered

Problem with Power App multi-screen form editing SharePoint List

(0) ShareShare
ReportReport
Posted on by Microsoft Employee

Hello, 

 

I am having an issue creating a Power App that will allow for a user to edit an item in a SharePoint List. There are going to be a LOT of columns on this list, right now I've only made about 20 as I am testing how to create this. The final product will have about 200 columns. Please note this is my first time using Power Apps. 

 

Because of the many fields, I have split the edit form across multiple screens within the App.

 

Right now there's 5 screens: 

 

  • LandingScreen: Has a Gallery that shows the existing list items to select one to edit. 
  • Screen1-3: Each has its own EditForm (Form1, Form2, Form3) with fields from the List Item, and buttons for Prev Page/Next Page
    • Screen3 has a Submit button instead of Next Page. It uses this formula to successfully submit the edits (sometimes... getting to that): 

 

 

Patch(
 'Shear Verification',
 Gallery1.Selected,
 Form1.Updates,
 Form2.Updates,
 Form3.Updates
);
Navigate(Screen4,ScreenTransition.Cover) 

 

 

  • Screen4 is just a success screen. 

 

The problem I'm having is that it seems like every time the form loads and I start making edits on Screen1, those edits are lost when advancing to Screen2 THE FIRST TIME ONLY. If I edit Screen1, advance and then go back and edit again, the edits persist. This is the same case for Screen2 advancing to Screen3. However anything I do on Screen3 seems to always persist and get saved. 

 

I am hoping this just is something to do with how I'm navigating or some other setting I'm not aware of.

  

Happy to provide whatever else I can to help with identifying what could be causing this. 

  

My Prev/Next Page buttons are using: Navigate(Screen2, ScreenTransition.Cover). 

  

Each form's DefaultMode is set to FormMode.Edit, Item is Gallery1.Selected.  

  

The NextArrow on the LandingPage uses Select(Parent); Navigate(Screen1,ScreenTransition.Cover). 

  

I put a screen recording on Dropbox to show the behavior. Link: https://www.dropbox.com/s/h16szze2dd2g6kg/Screen%20Recording%202020-11-13%20at%203.13.07%20PM.mov?dl=0 

 

Any advice on this is greatly appreciated! Thank you! 

  

-Joseph 

Categories:
I have the same question (0)
  • Verified answer
    RandyHayes Profile Picture
    76,299 Super User 2024 Season 1 on at

    @Anonymous 

    If you are doing this screen by screen, I would recommend the following:

     

    1) In your Gallery, set the OnSelect of your Arrow, put the following formula:

        Set(glbRecord, ThisItem); EditForm(Form3); Navigate(Screen1, Cover)

    2) On screen 1, have your Form1 fields set to whatever fields you want to display in that form.  Change the Item property to : glbRecord

    Set the DefaultMode to : Form3.Mode

     

    3) On screen 2, Form2, repeat step #2

     

    4) On screen 3, Form3,

        a) set the Item property to the following: Patch(glbRecord, Form1.Updates, Form2.Updates)

        b) Make sure that you have ALL of the fields in your EditForm. 

        c) go through all of the datacards for the fields you already have in Form1 and Form2, and set their Visible property to false (or do that later so that you can see how all I am proposing works).

     

    That is it...except instead of doing a Patch to set the record, now do a normal SubmitForm(Form3) on your submit.

    All of the fields from Form1 and 2 will be in Form3 and when you submit, it will submit all of it.

     

    The only extra credit to add...if you are interested in Creating new records with this method, then on whatever control you would use to initiate the creation of a new record, set the formula to the following:

    Set(glbRecord, Defaults('Shear Verification')); EditForm(Form3); Navigate(Screen1, Cover)

     

    The advantage of this method is that you get to use all the features of the EditForm without having to make them yourself (i.e. ValidUnsavedOnSuccess, OnFailure, Attachments, etc.)  Things that you would have to write yourself if you use a Patch from the Forms.

     

    I hope this is clear and helpful for you.

        

  • Community Power Platform Member Profile Picture
    Microsoft Employee on at

    Thanks @RandyHayes , I just implemented your suggestions and it seems to work. I had thought about this kind of method as a solution but wasn't sure how to actually do it. 

     

    I do have one question -- would you say that this is the "proper way" to implement what I'm doing? It feels kind of like a work-around, like a multi-page form updating an item from a SharePoint list seems like something that should be a bit more intuitive than this. I can see that I could just make a long scrolling form, but I don't particularly like the UI/UX of that when embedded in a SharePoint page, and I suspect my manager will not like it either. 

     

    Also! I understand glbRecord is just a variable name being created, but what does glb stand for? I'm stumped!

     

    Thanks again for the help!

     

    -Joseph

  • RandyHayes Profile Picture
    76,299 Super User 2024 Season 1 on at

    @Anonymous 

    Yes, I would say it is proper as there is no other easy alternative.  I say this only because it is a simple solution and the one key in PowerApps is simply and no-code.  So the faster you get to that, the better.

    There are a lot of things you can do with EditForms that really open up how you design your apps.  I am being prodded to quickly finish a new video I have on this subject and hope to do so this weekend.  What you would discover in the video is that there are a variety of ways that you can make EditForms do so much - mostly because they have so much already "baked in" to them.  The more you can use of it, the less you have to do.

     

    Anyway...glb is Global.  When you Set a variable, it is global to the App.  I usually distinguish them with glb so that I know that I am looking at a global variable. 🙂

     

    Glad as always to help!

  • RandyHayes Profile Picture
    76,299 Super User 2024 Season 1 on at

    @Anonymous 

    FYI - I put together a video that shows how to do this a little clearer.  I hope you get a chance to watch it.

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Introducing the 2026 Season 1 community Super Users

Congratulations to our 2026 Super Users!

Kudos to our 2025 Community Spotlight Honorees

Congratulations to our 2025 community superstars!

Congratulations to the March Top 10 Community Leaders!

These are the community rock stars!

Leaderboard > Power Apps

#1
11manish Profile Picture

11manish 541

#2
WarrenBelz Profile Picture

WarrenBelz 434 Most Valuable Professional

#3
Valantis Profile Picture

Valantis 289

Last 30 days Overall leaderboard