Power Apps problema con il salvataggio di un form (random)
Una tipica applicazione Power Apps prevede un controllo BrowseList (Raccolta) in una pagina, dove cliccando su un item si viene rediretti ad un altra pagina con un controllo Form (Modulo) per l'editing.
Normalmente il controllo BrowseList ha la proprietà OnSelect impostata per spostarsi sulla pagina di editing, ad esempio: Navigate(ScreenAnagrafica_Sezione1; ScreenTransition.Fade).
Nella pagina di editing il controllo form ha la proprietà Item impostata a BrowseList1.Selected.nella stessa pagina ci sarà un pulsante con la proprietà OnSelect impostata con un istruzione di salvataggio simile a questa Patch(MioDataSource; BrowseList1.Selected; FormSezione1.Updates));
Fino a qui tutto bene, ma... può capitare che Power Apps, dopo il salvataggio con l'istruzione Patch decida di rieseguire la query associata al controllo BrowseList (non ho ben capito in quali condizioni). Questo non sarebbe un problema se non per il fatto che la selezione (proprietà Selected) si perde e si posiziona sul primo elemento della query. Quindi un successivo salvataggio sicuramente agirebbe su un elemento diverso da quello selezionato precedentemente.
Per risolvere il problema, bisogna svincolarsi dalla proprietà Selected e salvarsi un identificativo univoco del record scelto.
Ad esempio si può, sulla proprietà OnSelect, salvarsi in una variabile (Set) l'item selezionato prima di cambiare pagina:
e modificare l'istruzione di salvataggio in:
Morale meglio evitare di associare un Form alla proprietà Selected di un controllo BrowseList.
Normalmente il controllo BrowseList ha la proprietà OnSelect impostata per spostarsi sulla pagina di editing, ad esempio: Navigate(ScreenAnagrafica_Sezione1; ScreenTransition.Fade).
Nella pagina di editing il controllo form ha la proprietà Item impostata a BrowseList1.Selected.nella stessa pagina ci sarà un pulsante con la proprietà OnSelect impostata con un istruzione di salvataggio simile a questa Patch(MioDataSource; BrowseList1.Selected; FormSezione1.Updates));
Fino a qui tutto bene, ma... può capitare che Power Apps, dopo il salvataggio con l'istruzione Patch decida di rieseguire la query associata al controllo BrowseList (non ho ben capito in quali condizioni). Questo non sarebbe un problema se non per il fatto che la selezione (proprietà Selected) si perde e si posiziona sul primo elemento della query. Quindi un successivo salvataggio sicuramente agirebbe su un elemento diverso da quello selezionato precedentemente.
Per risolvere il problema, bisogna svincolarsi dalla proprietà Selected e salvarsi un identificativo univoco del record scelto.
Ad esempio si può, sulla proprietà OnSelect, salvarsi in una variabile (Set) l'item selezionato prima di cambiare pagina:
Power Apps
Set(CurrentItemID; BrowseList1.Selected.ID);;
Set(CurrentItem; First(Filter(MioDataSource; ID = CurrentID);;
Navigate(ScreenAnagrafica_Sezione1; ScreenTransition.Fade)
In italiano usare il doppio punto e virgola (;;) come separatore delle istruzioni. Dopo l'ultima non deve esserci altrimenti da errore.
poi usare la variabile CurrentItem nella proprietà Item come sorgente per il form:Power Apps
CurrentItem
Power Apps
Patch(MioDataSource; CurrentItem; FormSezione1.Updates));