Informazioni sui moduli dati in Microsoft PowerAppsUnderstand data forms in Microsoft PowerApps

Aggiungere tre tipi di controlli per consentire all'utente di cercare un record, visualizzarne i dettagli e modificare o creare un record:Add three types of controls so that the user can browse for a record, display details about that record, and edit or create a record:

AttivitàActivity ControlloControl DescrizioneDescription
Cercare un recordBrowse for a record Controllo raccoltaGallery control Filtrare, ordinare, cercare e scorrere i record in un'origine dati e selezionarne uno specifico.Filter, sort, search, and scroll through records in a data source, and select a specific record. Visualizzare solo alcuni campi di ogni record per mostrare diversi record contemporaneamente anche su uno schermo di piccole dimensioni.Display only a few fields from each record to show several records at a time, even on a small screen.
Visualizzare i dettagli di un recordShow details of a record Controllo modulo di visualizzazioneDisplay form control Visualizzare molti o tutti i campi di un singolo record.For a single record, display many or all fields in that record.
Modificare o creare un recordEdit or create a record Controllo modulo di modificaEdit form control Aggiornare uno o più campi di un singolo record o creare un record a partire dai valori predefiniti e salvare tali modifiche nell'origine dati sottostante.Update one or more fields in a single record (or create a record starting with default values), and save those changes back to the underlying data source.

Inserire ogni controllo in una diversa schermata per renderlo più facilmente distinguibile:Put each control on a different screen to make them easier to distinguish:

Esplorazione, visualizzazione e modifica dei record in tre schermate

Come illustrato in questo argomento, combinare questi controlli con formule per creare l'esperienza utente complessiva.As this topic describes, combine these controls with formulas to create the overall user experience.

PrerequisitiPrerequisites

Esplorare un'app generataExplore a generated app

PowerApps può generare automaticamente un'app in base a un'origine dati specificata dall'utente.PowerApps can automatically generate an app based on a data source that you specify. Ogni app contiene tre schermate con i controlli descritti in precedenza e formule di collegamento.Each app contains three screens with the controls described earlier and formulas that connect them. Eseguire queste app predefinite, personalizzarle per scopi specifici oppure esaminarne il funzionamento per apprendere concetti utili applicabili alle proprie app.Run these apps "out of the box," customize them for your specific goals, or examine how they work so that you can learn useful concepts that apply to your own apps. Nelle sezioni seguenti verranno esaminate le schermate, i controlli e le formule alla base di un'app generata.In the following sections, inspect the screens, controls, and formulas that drive a generated app.

Schermata di esplorazioneBrowse screen

Controlli nella schermata di esplorazione

Questa schermata include tre formule chiave:This screen features these key formulas:

ControlloControl Comportamento supportatoSupported behavior FormulaFormula
BrowseGallery1BrowseGallery1 Visualizza record dell'origine dati Assets.Display records from the Assets data source. La proprietà Items della raccolta è impostata su una formula basata sull'origine dati Assets.The Items property of the gallery is set to a formula that's based on the Assets data source.
ImageNewItem1ImageNewItem1 Visualizza la schermata di modifica e creazione con ogni campo impostato su un valore predefinito in modo che l'utente possa creare facilmente un record.Display the Edit and Create screen with each field set to a default value, so that the user can easily create a record. La proprietà OnSelect dell'immagine è impostata su questa formula:The OnSelect property of the image is set to this formula:
NewForm( EditForm1 );
Navigate( EditScreen1, None )
NewForm( EditForm1 );
Navigate( EditScreen1, None )
NextArrow1 (nella raccolta)NextArrow1 (in the gallery) Visualizza la schermata dei dettagli per mostrare molti o tutti i campi del record attualmente selezionato.Display the Details screen to view many or all fields of the currently selected record. La proprietà OnSelect della freccia è impostata su questa formula:The OnSelect property of the arrow is set to this formula:
Navigate( DetailScreen1, None )Navigate( DetailScreen1, None )

Il controllo primario di questa schermata, BrowseGallery1 occupa la maggior parte dell'area disponibile.The primary control on this screen, BrowseGallery1, covers most of the area of the screen. L'utente può scorrere la raccolta per trovare un record specifico per la visualizzazione di altri campi o l'aggiornamento.The user can scroll through the gallery to find a specific record to display more fields or to update.

Impostare la proprietà Items di una raccolta per visualizzarvi i record di un'origine dati.Set the Items property of a gallery to show records from a data source in it. Ad esempio, impostare tale proprietà su Assets per visualizzare i record di un'origine dati con tale nome.For example, set that property to Assets to show records from a data source of that name.

Nota: in un'app generata, per impostazione predefinita la proprietà Items è impostata su una formula molto più complessa in modo che l'utente possa ordinare e cercare i record.Note: In a generated app, Items is set to a significantly more complicated formula by default so that the user can sort and search for records. La creazione di tale formula verrà illustrata più avanti in questo argomento. Per il momento è sufficiente la versione più semplice.You'll learn how to build that formula later in this topic; the simpler version is enough for now.

Invece di trovare un record da visualizzare o modificare, l'utente può creare un record selezionando il simbolo "+" sopra la raccolta.Instead of finding a record to display or edit, the user can create a record by selecting the "+" symbol above the gallery. Per creare questo effetto, aggiungere un controllo immagine contenente un simbolo "+" e impostarne la proprietà OnSelect su questa formula:Create this effect by adding an Image control, showing a "+" symbol in it, and setting its OnSelect property to this formula:
NewForm( EditForm1 ); Navigate( EditScreen1, None )NewForm( EditForm1 ); Navigate( EditScreen1, None )

Questa formula apre la schermata di modifica e creazione, che contiene un controllo modulo di modifica denominato EditForm1.This formula opens the Edit and Create screen, which features an Edit form control named EditForm1. La formula determina anche il passaggio del modulo alla modalità Nuovo, in cui vengono visualizzati i valori predefiniti dell'origine dati in modo che l'utente possa creare facilmente un record da zero.The formula also switches that form into New mode, in which the form shows default values from the data source so that the user can easily create a record from scratch.

Per esaminare qualsiasi controllo visualizzato in BrowseGallery1, selezionare il controllo nella prima sezione della raccolta, che funge da modello per tutte le altre sezioni.To examine any control that appears in BrowseGallery1, select that control in the first section of that gallery, which serves as a template for all other sections. Ad esempio, selezionare il controllo Etichetta centrale lungo il bordo sinistro:For example, select the middle Label control on the left edge:

Controlli nella schermata di esplorazione

In questo esempio, la proprietà Text del controllo è impostata su ThisItem.AssignedTo, che è un campo dell'origine dati Assets.In this example, the control's Text property is set to ThisItem.AssignedTo, which is a field in the Assets data source. La proprietà Text degli altri tre controlli Etichetta nella raccolta è impostata su formule simili e ogni controllo visualizza un diverso campo dell'origine dati.The Text property of the other three Label controls in the gallery are set to similar formulas, and each control shows a different field in the data source.

Selezionare il controllo forma (la freccia) e verificare che la relativa proprietà OnSelect sia impostata su questa formula:Select the Shape control (the arrow), and confirm that its OnSelect property is set to this formula:
Navigate( DetailScreen1, None )Navigate( DetailScreen1, None )

Se l'utente trova un record in BrowseGallery1, può selezionare la freccia di tale record per visualizzare altre informazioni su di esso in DetailScreen1.If the user finds a record in BrowseGallery1, the user can select the arrow for that record to show more information about it in DetailScreen1. Selezionando una freccia, l'utente modifica il valore della proprietà Selected di BrowseGallery1.By selecting an arrow, the user changes the value of the Selected property of BrowseGallery1. In questa app, tale proprietà determina il record visualizzato non solo in DetailScreen1, ma anche nella schermata di modifica e creazione se l'utente decide di aggiornare il record.In this app, that property determines which record appears in not only DetailScreen1 but also, if the user decides to update the record, the Edit and Create screen.

Schermata dei dettagliDetail screen

Controlli nella schermata dei dettagli

Questa schermata include tre formule chiave:This screen features these key formulas:

ControlloControl Comportamento supportatoSupported behavior FormulaFormula
DetailForm1DetailForm1 Visualizza un record dell'origine dati Assets.Displays a record in the Assets data source Impostare la proprietà DataSource su Assets.Set the DataSource property to Assets.
DetailForm1DetailForm1 Determina il record da visualizzare.Determines which record to display. In un'app generata, visualizza il record selezionato dall'utente nella raccolta.In a generated app, displays the record that the user selected in the gallery. Impostare la proprietà Item di questo controllo sul valore seguente:Set the Item property of this control to this value:
BrowseGallery1.SelectedBrowseGallery1.Selected
Controlli schedaCard controls In un controllo modulo di visualizzazione visualizzano un singolo campo di un record.In a Display form control, displays a single field in a record. Impostare la proprietà DataField sul nome di un campo racchiuso tra virgolette (ad esempio, "Name").Set the DataField property to the name of a field, enclosed in double quotation marks (for example, "Name").
ImageBackArrow1ImageBackArrow1 Selezionando questo controllo, l'utente apre BrowseScreen1.When the user selects this control, opens BrowseScreen1. Impostare la proprietà OnSelect su questa formula:Set the OnSelect property to this formula:
Back()Back()
ImageDelete1ImageDelete1 Selezionando questo controllo, l'utente elimina un record.When the user selects this control, deletes a record. Impostare la proprietà OnSelect su questa formula:Set the OnSelect property to this formula:
Remove( Assets, BrowseGallery1.Selected )Remove( Assets, BrowseGallery1.Selected )
ImageEdit1ImageEdit1 Selezionando questo controllo, l'utente apre la schermata di modifica e creazione per il record corrente.When the user selects this control, opens the Edit and Create screen to the current record. Impostare la proprietà OnSelect su questa formula:Set the OnSelect property to this formula:
Navigate( EditScreen1, None )Navigate( EditScreen1, None )

Nella parte superiore della schermata, tre immagini all'esterno di DetailForm1 fungono da pulsanti per l'orchestrazione tra le tre schermate dell'app.At the top of the screen, three images sit outside of DetailForm1 and act as buttons, orchestrating between the three screens of the app.

La schermata è dominata da DetailForm1, che visualizza il record selezionato dall'utente nella raccolta perché la proprietà Item del modulo è impostata su BrowseGallery1.Selected.DetailForm1 dominates this screen and displays the record that the user selected in the gallery (because the form's Item property is set to BrowseGallery1.Selected). La proprietà DataSource del modulo fornisce anche i metadati relativi all'origine dati, ad esempio un nome visualizzato descrittivo per ogni campo.The DataSource property of the form also provides metadata about the data source, such as a user-friendly display name for each field.

DetailForm1 contiene diversi controlli scheda.DetailForm1 contains several Card controls. Per individuare informazioni aggiuntive è possibile selezionare il controllo scheda oppure il controllo in esso contenuto.You can select either the Card control itself or the control that it contains to discover additional information.

Scheda dettagli e controlli scheda selezionati durante la creazione

La proprietà DataField di un controllo scheda determina il campo visualizzato nella scheda.The DataField property of a Card control determines which field the card displays. In questo caso, tale proprietà è impostata su AssetID.In this case, that property is set to AssetID. La scheda contiene un controllo Etichetta la cui proprietà Text è impostata su Parent.Default.The card contains a Label control for which the Text property is set to Parent.Default. Questo controllo visualizza il valore Default per la scheda, impostato tramite la proprietà DataField.This control shows the Default value for the card, which is set through the DataField property.

In un'app generata, i controlli scheda sono bloccati per impostazione predefinita.In a generated app, Card controls are locked by default. Quando una scheda è bloccata, non è possibile modificare alcune proprietà, ad esempio DataField, e per tali proprietà non è disponibile la barra della formula.When a card is locked, you can't modify some properties, such as DataField, and the formula bar is unavailable for those properties. Questa restrizione garantisce che le personalizzazioni dell'utente non compromettano le funzionalità di base dell'app generata.This restriction helps ensure that your customizations don't break the basic functionality of the generated app. È tuttavia possibile modificare alcune proprietà di una scheda e dei relativi controlli nel riquadro destro:However, you can change some properties of a card and its controls in the right-hand pane:

Schermata dei dettagli con riquadro delle opzioni aperto

Nel riquadro destro è possibile selezionare i campi da mostrare e la tipologia di controllo in cui ogni campo verrà visualizzato.In the right-hand pane, you can select which fields to display and in which kind of control each field displays.

Schermata di creazione/modificaEdit/Create screen

Controlli nella schermata di modifica

Questa schermata include tre formule chiave:This screen features these key formulas:

ControlloControl Comportamento supportatoSupported behavior FormulaFormula
EditForm1EditForm1 Visualizza un record dell'origine dati Assets.Displays a record in the Assets data source. Impostare la proprietà DataSource su Assets.Set the DataSource property to Assets.
EditForm1EditForm1 Determina il record da visualizzare.Determines which record to display. In un'app generata, visualizza il record selezionato dall'utente in BrowseScreen1.In a generated app, displays the record that the user selected in BrowseScreen1. Impostare la proprietà Item su questo valore:Set the Item property to this value:
BrowseGallery1.SelectedBrowseGallery1.Selected
Controlli schedaCard controls In un controllo modulo di modifica, forniscono controlli che consentono all'utente di modificare uno o più campi di un record.In a Edit form control, provides controls so that the user can edit one or more fields in a record. Impostare la proprietà DataField sul nome di un campo racchiuso tra virgolette (ad esempio, "Name").Set the DataField property to the name of a field, enclosed in double quotation marks (for example, "Name").
ImageCancel1ImageCancel1 Selezionando questo controllo, l'utente rimuove tutte le modifiche in corso e apre la schermata dei dettagli.When the user selects this control, discards any changes in progress, and opens the Details screen. Impostare la proprietà OnSelect su questa formula:Set the OnSelect property to this formula:
ResetForm( EditForm1 ); Back()ResetForm( EditForm1 ); Back()
ImageAccept1ImageAccept1 Selezionando questo controllo, l'utente invia le modifiche all'origine dati.When the user selects this control, submits changes to the data source. Impostare la proprietà OnSelect su questa formula:Set the OnSelect property to this formula:
SubmitForm( EditForm1 )SubmitForm( EditForm1 )
EditForm1EditForm1 Se le modifiche vengono accettate, torna alla schermata precedente.If changes are accepted, returns to the previous screen. Impostare la proprietà OnSuccess su questa formula:Set the OnSuccess property to this formula:
Back()Back()
EditForm1EditForm1 Se le modifiche non vengono accettate, mantiene la schermata corrente in modo che l'utente possa risolvere i problemi e provare di nuovo l'invio.If changes aren't accepted, remain on the current screen so that the user can fix any issues and try to submit again. Lasciare vuota la proprietà OnFailure.Leave the OnFailure property blank.
LblFormError1LblFormError1 Se le modifiche non vengono accettate, visualizza un messaggio di errore.If changes aren't accepted, shows an error message. Impostare la proprietà Text su questo valore:Set the Text property to this value:
EditForm1.ErrorEditForm1.Error

Così come la schermata dei dettagli, la schermata di modifica e creazione è dominata da un controllo modulo denominato EditForm1.As in the Details screen, a form control, named EditForm1, dominates the Edit and Create screen. La proprietà Item di EditForm1, inoltre, è impostata su BrowseGallery1.Selected affinché il modulo visualizzi il record selezionato dall'utente in BrowseScreen1.In addition, the Item property of EditForm1 is set to BrowseGallery1.Selected, so the form displays the record that the user selected in BrowseScreen1. Mentre la schermata dei dettagli visualizza ogni campo in sola lettura, in EditForm1 l'utente può aggiornare il valore di uno o più campi usando i controlli.While the Details screen shows each field as read-only, the user can update the value of one or more fields by using the controls in EditForm1. Viene anche usata la proprietà DataSource per accedere ai metadati relativi all'origine dati, come il nome visualizzato descrittivo di ogni campo e la posizione in cui verranno salvate le modifiche.It also uses the DataSource property to access metadata about this data source, such as the user-friendly display name for each field and the location where changes should be saved.

Se l'utente seleziona l'icona "X" per annullare un aggiornamento, la funzione ResetForm rimuove tutte le modifiche non salvate e la funzione Back apre la schermata dei dettagli.If the user selects the "X" icon to cancel an update, the ResetForm function discards any unsaved changes, and the Back function opens the Details screen. Sia la schermata dei dettagli che quella di modifica e creazione visualizzano lo stesso record finché l'utente non ne seleziona un altro in BrowseScreen1.Both the Details screen and the Edit and Create screen show the same record until the user selects a different one on BrowseScreen1. I campi del record rimangono impostati sugli ultimi valori salvati, non sulle modifiche eventualmente effettuate e successivamente abbandonate dall'utente.The fields in that record remain set to the values that were most recently saved, not any changes that the user made and then abandoned.

Se l'utente modifica uno o più valori nel modulo e quindi seleziona l'icona "segno di spunta", la funzione SubmitForm invia le modifiche dell'utente all'origine dati.If the user changes one or more values in the form and then selects the "checkmark" icon, the SubmitForm function sends the user's changes to the data source.

  • Se le modifiche vengono salvate, viene eseguita la formula OnSuccess del modulo e la funzione Back() apre la schermata dei dettagli in modo da visualizzare il record aggiornato.If the changes are successfully saved, the form's OnSuccess formula runs, and the Back() function opens the detail screen to show the updated record.
  • Se il salvataggio delle modifiche ha esito negativo, viene eseguita la formula OnFailure del modulo, che tuttavia non esegue alcuna azione perché è vuota.If the changes aren't successfully saved, the form's OnFailure formula runs, but it doesn't change anything because it's blank. La schermata di modifica e creazione resta aperta in modo che l'utente possa annullare le modifiche o correggere l'errore.The Edit and Create screen remains open so that the user can either cancel the changes or fix the error. LblFormError1 visualizza il messaggio di errore descrittivo su cui è impostata la proprietà Error del modulo.LblFormError1 shows a user-friendly error message, to which the form's Error property is set.

Così come un controllo modulo di visualizzazione, un controllo modulo di modifica contiene controlli scheda contenenti altri controlli che visualizzano diversi campi di un record:As with a Display form control, an Edit form control contains Card controls, which contain other controls that show different fields in a record:

Scheda di modifica e controlli scheda selezionati durante la creazione

Nell'immagine precedente, la scheda selezionata visualizza il campo AssetID e contiene un controllo input di testo in modo che l'utente possa modificare il valore del campo.In the previous image, the selected card shows the AssetID field and contains a Text input control so that the user can edit the value of that field. La schermata dei dettagli, invece, visualizza lo stesso campo in un controllo Etichetta di sola lettura. Il controllo input di testo ha una proprietà Default, che è impostata su Parent.Default.(In contrast, the detail screen shows the same field in a Label control, which is read-only.) The Text input control has a Default property, which is set to Parent.Default. Se l'utente creasse un record invece di modificarne uno, il controllo visualizzerebbe un valore iniziale modificabile dall'utente per il nuovo record.If the user were creating a record instead of editing one, that control would show an initial value that the user can change for the new record.

Nel riquadro destro, è possibile mostrare o nascondere ogni scheda, riorganizzarle oppure configurarle per visualizzare i campi in diversi tipi di controlli.In the right-hand pane, you can show or hide each card, rearrange them, or configure them to show fields in different types of controls.

Schermata di modifica con riquadro delle opzioni aperto

Creare un'app da zeroBuild an app from scratch

Comprendendo come PowerApps genera un'app, è possibile crearne una che usi gli stessi blocchi predefiniti e le stesse formule illustrati in precedenza in questo argomento.By understanding how PowerApps generates an app, you can build one yourself that uses the same building blocks and formulas discussed earlier in this topic.

Identificare i dati di testIdentify test data

Per sfruttare al meglio questo argomento, iniziare con un'origine dati su cui sia possibile eseguire esperimenti.To get the most from this topic, start with a data source with which you can experiment. Deve contenere dati di test che possano essere letti e aggiornati senza problemi.It should contain test data that you can read and update without concern.

Nota: se si usa un elenco di SharePoint o una tabella di Excel che contiene i nomi di colonna con spazi come origine dati, PowerApps sostituirà gli spazi con "_x0020_".Note: If you use a SharePoint list or an Excel table that contains column names with spaces as your data source, PowerApps will replace the spaces with "_x0020_". Ad esempio, "Nome colonna" in SharePoint o Excel verrà visualizzato come "Column_x0020_Name" in PowerApps quando viene visualizzato nel layout di dati o usato in una formula.For example, "Column Name" in SharePoint or Excel will appear as "Column_x0020_Name" in PowerApps when displayed in the data layout or used in a formula.

Per seguire esattamente il resto dell'argomento, creare un elenco SharePoint denominato "Ice Cream" contenente questi dati:To follow the rest of this topic exactly, create a SharePoint list named "Ice Cream" that contains this data:

Elenco SharePoint "Ice Cream"

  • Creare da zero un'app per telefoni e connettere l'app all'origine dati.Create an app from blank, for phones, and connect it to your data source.

    Nota: le app per tablet sono molto simili, ma può essere preferibile un diverso layout della schermata per sfruttare al meglio lo spazio aggiuntivo sullo schermo.Note: Tablet apps are very similar, but you may want a different screen layout to make the most of the extra screen space.

    Gli esempi nel resto dell'argomento sono basati su un origine dati denominata Ice Cream.The examples in the rest of the topic are based on a data source named Ice Cream.

Esplorare i recordBrowse records

Recuperare rapidamente un'informazione da un record trovando il record in una raccolta in una schermata di esplorazione.Get a quick piece of information from a record by finding it in a gallery on a browse screen.

  1. Aggiungere una raccolta verticale e modificare il layout solo per il Titolo.Add a Vertical gallery, and change the layout to Title only.

    Connessione della raccolta all'origine dati Ice Cream

  2. Impostare la proprietà Items della raccolta su Ice Cream.Set the gallery's Items property to Ice Cream.
  3. Impostare la proprietà Text della prima etichetta nella raccolta su ThisItem.Title se è impostata su qualcos'altro.Set the Text property of the first label in the gallery to ThisItem.Title if it's set to something else.

    L'etichetta ora visualizzerà il valore nel campo Titolo per ogni record.The label now shows the value in the Title field for each record.

    Connessione della raccolta all'origine dati Ice Cream

  4. Ridimensionare la raccolta per riempire la schermata e impostarne la proprietà TemplateSize su 60.Resize the gallery to fill the screen, and set its TemplateSize property to 60.

    La schermata sarà simile a questo esempio, che visualizza tutti i record dell'origine dati:The screen resembles this example, which shows all records in the data source:

    Connessione della raccolta all'origine dati Ice Cream

Visualizza dettagliView details

Se la raccolta non visualizza le informazioni desiderate, selezionare la freccia di un record per aprire la schermata dei dettagli,If the gallery doesn't show the information that you want, select the arrow for a record to open the details screen. in cui un controllo modulo di visualizzazione mostra altri campi del record selezionato, possibilmente tutti.A Display form control on that screen shows more, possibly all, fields for the record that you selected.

Per visualizzare il record, il controllo modulo di visualizzazione usa due proprietà.The Display form control uses two properties to display the record:

  • Proprietà DataSource:DataSource property. nome dell'origine dati contenente il record.The name of the data source that holds the record. Questa proprietà popola il pannello destro con i campi e determina il nome visualizzato e il tipo di dati (stringa, numero, data e così via) di ognuno.This property populates the right-hand panel with fields and determines the display name and data type (string, number, date, etc.) of each field.
  • Proprietà Item:Item property. record da visualizzare.The record to display. Questa proprietà è spesso connessa alla proprietà Selected del controllo raccolta, in modo che l'utente possa selezionare un record nel controllo raccolta e quindi esaminarlo.This property is often connected to the Selected property of the Gallery control so that the user can select a record in the Gallery control and then drill into that record.

Dopo aver impostato la proprietà DataSource, è possibile aggiungere e rimuovere campi tramite il riquadro destro e modificare il modo in cui vengono visualizzati.When the DataSource property is set, you can add and remove fields through the right-hand pane and change how they're displayed.

In questa schermata, gli utenti non possono modificare intenzionalmente o accidentalmente i valori del record.On this screen, users can't intentionally or accidentally change any values of the record. Il controllo modulo di visualizzazione è di sola lettura, di conseguenza il record non verrà modificato.The Display form control is a read-only control, so it won't modify a record.

Per aggiungere un controllo modulo di visualizzazione:To add a Display form control:

  1. Aggiungere una schermata e quindi aggiungervi un controllo modulo di visualizzazione.Add a screen, and then add a Display form control to it
  2. Impostare la proprietà DataSource del controllo modulo su 'Ice Cream'.Set the DataSource property of the form control to 'Ice Cream'.

Nel riquadro destro è possibile selezionare i campi da mostrare nella schermata e il tipo di scheda da visualizzare per ogni campo.In the right-hand pane, you can select the fields to display on your screen and which type of card to display for each field. Mentre si apportano modifiche nel riquadro destro, la proprietà DataField di ogni controllo scheda viene impostata sul campo con cui interagirà l'utente.As you make changes in the right-hand pane, the DataField property on each Card control is set to the field that the user will interact with. La schermata sarà simile a questo esempio:Your screen should resemble this example:

Modulo di visualizzazione per l'origine dati Ice Cream

È infine necessario connettere il controllo modulo di visualizzazione al controllo raccolta per poter esaminare i dettagli di un record specifico.Finally, we need to connect the Display form control to the Gallery control so that we can look at details for a specific record. Non appena viene completata l'impostazione della proprietà Item, nel modulo verrà visualizzato il primo record della raccolta.As soon as we complete setting the Item property, the first record from the gallery will appear in our form.

  1. Impostare la proprietà Item del controllo modulo di visualizzazione su Gallery1.Selected.Set the Item property of the Display form control to Gallery1.Selected.

    Nel modulo verranno visualizzati i dettagli dell'elemento selezionato.The details for the selected item appear in the form.

    Modulo di visualizzazione per l'origine dati Ice Cream, connesso al controllo raccolta

Ottimo.Great! È ora possibile affrontare lo spostamento, ossia come un utente apre la schermata dei dettagli dalla schermata della raccolta e viceversa.We now turn to navigation: how a user opens the details screen from the gallery screen and opens the gallery screen from the details screen.

  1. Aggiungere un controllo pulsante alla schermata e quindi impostarne la proprietà Text in modo da visualizzare Indietro e la proprietà OnSelect su Back().Add a Button control to the screen, set its Text property to show Back, and set its OnSelect property to Back().

    Questa formula riporta l'utente alla raccolta al termine della visualizzazione dei dettagli.This formula returns the user back to the gallery when they finish viewing details.

Modulo di visualizzazione per l'origine dati Ice Cream con pulsante Indietro

Tornare ora al controllo raccolta e aggiungere alcune funzionalità di spostamento alla schermata dei dettagli.Now, let's return to the Gallery control and add some navigation to our detail screen.

  1. Passare alla prima schermata, contenente il controllo Raccolta, e selezionare la freccia nel primo elemento della raccolta.Switch to the first screen, which is hosting our Gallery control, and select the arrow in the first item in the gallery.
  2. Impostare la proprietà OnSelect della forma su questa formula:Set the OnSelect property of the shape to this formula:
    Navigate( Screen2, None )Navigate( Screen2, None )

    Modulo di visualizzazione per l'origine dati Ice Cream con pulsante Indietro

  3. Premere F5 e quindi selezionare una freccia nella raccolta per visualizzare i dettagli di un elemento.Press F5, and then select an arrow in the gallery to show the details for an item.
  4. Selezionare il pulsante Indietro per tornare alla raccolta dei prodotti e quindi premere ESC.Select the Back button to return to the gallery of products, and then press Esc.

Modifica dei dettagliEditing details

Infine, l'ultima attività di base è la modifica del contenuto di un record, eseguita dagli utenti in un controllo modulo di modifica.Finally, our last core activity is changing the contents of a record, which users accomplish in an Edit form control.

Per visualizzare e modificare il record, il controllo modulo di modifica usa due proprietà.The Edit form control uses two properties to display and edit the record:

  • Proprietà DataSource:DataSource property. nome dell'origine dati contenente il record.The name of the data source that holds the record. Come nel caso del controllo modulo di visualizzazione, questa proprietà popola il pannello destro con i campi e determina il nome visualizzato e il tipo di dati (stringa, numero, data e così via) di ognuno.Just as with the Display form control, this property populates the right-hand panel with fields and determines the display name and data type (string, number, date, etc.) for each field. Questa proprietà determina anche la validità o meno del valore di ogni campo prima dell'invio all'origine dati sottostante.This property also determines whether each field's value is valid before submitting it to the underlying data source.
  • Proprietà Item:Item property. record da modificare, spesso connesso alla proprietà Selected del controllo raccolta.The record to edit, which is often connected to the Selected property of the Gallery control. In questo modo è possibile selezionare un record nel controllo raccolta, visualizzarlo nella schermata dei dettagli e modificarlo nella schermata di modifica e creazione.That way, you can select a record in the Gallery control, show it in the details screen, and edit it in the Edit and Create screen.

Per aggiungere un controllo modulo di modifica:To add an Edit form control:

  1. Aggiungere una schermata, aggiungere un controllo modulo di modifica e quindi impostare la proprietà DataSource del modulo su 'Ice Cream'.Add a screen, add an Edit form control, and then set the form's DataSource property to 'Ice Cream'.
  2. Impostare la proprietà Item su Gallery1.Selected.Set the Item property to Gallery1.Selected.

È ora possibile selezionare i campi da mostrare nella schermata,You can now select the fields to display on your screen. nonché il tipo di scheda da visualizzare per ogni campo.You can also select which type of card to display for each field. Mentre si apportano modifiche nel riquadro destro, la proprietà DataField di ogni controllo scheda viene impostata sul campo con cui interagirà l'utente.As you make changes in the right-hand pane, the DataField property on each Card control is set to the field your user will interact with. La schermata sarà simile a questo esempio:Your screen should resemble this example:

Modulo di visualizzazione per l'origine dati Ice Cream

Queste due proprietà sono uguali alle proprietà del controllo modulo di visualizzazione.These two properties are the same as the properties on the Display form control. Con queste proprietà soltanto, è possibile visualizzare i dettagli di un record.And with these alone, we can display the details of a record.

Il controllo modulo di modifica fornisce funzionalità aggiuntive offrendo la funzione SubmitForm per il writeback delle modifiche nell'origine dati.The Edit form control goes further by offering the SubmitForm function to write back changes to the data source. La funzione viene usata con un controllo immagine o pulsante per salvare le modifiche di un utente.You use this with a button or image control to save a user's changes.

  • Aggiungere un controllo pulsante e quindi impostarne la proprietà Text in modo da visualizzare Salva e la proprietà OnSelect su questa formula:Add a Button control, set its Text property to show Save, and set its OnSelect property to this formula:
    SubmitForm( Form1 ) SubmitForm( Form1 )

Modulo di modifica per l'origine dati Ice Cream

Per aggiungere lo spostamento da e verso questa schermata:To add navigation to and from this screen:

  1. Aggiungere un controllo pulsante e quindi impostarne la proprietà Text in modo da visualizzare Annulla e la proprietà OnSelect su questa formula:Add another Button control, set its Text property to show Cancel, and set its OnSelect property to this formula:
    ResetForm( Form1 ); Back()ResetForm( Form1 ); Back()

    Questa formula rimuove le modifiche non salvate e apre la schermata precedente.This formula discards any unsaved edits and opens the previous screen.

    Modulo di visualizzazione per l'origine dati Ice Cream

  2. Impostare la proprietà OnSuccess del modulo su Back().Set the OnSuccess property of the form to Back().

    Al termine del salvataggio delle modifiche, viene aperta automaticamente la schermata precedente, in questo caso quella dei dettagli.When updates are successfully saved, the previous screen (in this case, the details screen) opens automatically.

    Modulo di modifica con aggiunta della regola "OnSuccess"

  3. Nella schermata di visualizzazione aggiungere un pulsante e quindi impostarne la proprietà Text in modo da visualizzare Modifica e la proprietà OnSelect su questa formula:On the Display screen, add a button, set its Text property to show Edit, and set its OnSelect property to this formula:
    Navigate( Screen3, None )Navigate( Screen3, None )

    Modulo di visualizzazione con aggiunta del pulsante "Modifica"

È stata creata un'app di base con tre schermate per la visualizzazione e l'immissione di dati.You've built a basic app with three screens for viewing and entering data. Per fare una prova, visualizzare la schermata della raccolta e quindi premere F5 oppure selezionare il pulsante "Anteprima" con la freccia avanti accanto all'angolo superiore destro della schermata.To try it out, show the gallery screen, and then press F5 (or select the forward arrow "Preview" button near the upper-left corner of the screen). Il punto rosa indica dove un utente tocca o fa clic sulla schermata in ogni passaggio.The pink dot indicates where the user clicks or taps the screen at each step.

Provare l'app Ice Cream

Creare un recordCreate a record

L'utente interagisce con lo stesso modulo di modifica sia per l'aggiornamento che per la creazione dei record.The user interacts with the same Edit form to both update and create records. Quando l'utente vuole creare un record, la funzione NewForm determina il passaggio del modulo alla modalità Nuovo.When the user wants to create a record, the NewForm function switches the form to New mode.

Quando il modulo è nella modalità Nuovo, ogni campo viene impostato sul valore predefinito dell'origine dati.When the form is in New mode, the value of each field is set to the defaults of the data source. Il record specificato nella proprietà Item del modulo viene ignorato.The record that's provided to the form's Item property is ignored.

Quando l'utente è pronto per salvare il nuovo record, viene eseguita la funzione SubmitForm.When the user is ready to save the new record, SubmitForm runs. Dopo che è stato completato l'invio, il modulo passa nuovamente alla modalità Modifica.After the form is successfully submitted, the form is switched back to EditMode.

Nella prima schermata si aggiungerà un pulsante Nuovo:On the first screen, you'll add a New button:

  1. Nella schermata con la raccolta, aggiungere un controllo pulsante.On the screen with the gallery, add a Button control.
  2. Impostare la proprietà Text del pulsante su Nuovo e la proprietà OnSelect su questa formula:Set the button's Text property to New and its OnSelect property to this formula:
    NewForm( Form1 ); Navigate( Screen3, None ) NewForm( Form1 ); Navigate( Screen3, None )

    Questa formula determina il passaggio del controllo modulo di modifica di Screen3 alla modalità Nuovo e apre la schermata in modo che possa essere compilata dall'utente.This formula switches the Edit form control on Screen3 to New mode and opens that screen so that the user can fill it in.

Modulo di visualizzazione con aggiunta del pulsante "Modifica"

Quando viene aperta la schermata di modifica e creazione, il modulo è vuoto e pronto per l'aggiunta di un elemento da parte dell'utente.When the Edit and Create screen opens, the form is empty, ready for the user to add an item. Quando l'utente seleziona il pulsante Salva, la funzione SubmitForm fa sì che venga eseguita la creazione anziché l'aggiornamento di un record.When the user selects the Save button, the SubmitForm function ensures that a record is created instead of being updated. Se l'utente seleziona il pulsante Annulla, la funzione ResetForm riporta il modulo alla modalità Modifica e la funzione Back apre la schermata per l'esplorazione della raccolta.If the user selects the Cancel button, the ResetForm function switches the form back to Edit mode, and the Back function opens the screen for browsing the gallery.

Eliminare un recordDelete a record

  1. Nella schermata di visualizzazione aggiungere un pulsante e impostarne la proprietà Text in modo da visualizzare Elimina.On the Display screen, add a button, and set its Text property to show Delete..
  2. Impostare la proprietà OnSelect del pulsante su questa formula:Set the button's OnSelect property to this formula:
    Remove( 'Ice Cream', Gallery1.Selected ); Back()Remove( 'Ice Cream', Gallery1.Selected ); Back()

    Modulo di visualizzazione con aggiunta del pulsante "Modifica"

Gestione degli erroriHandling errors

In questa app si verifica un errore quando il valore di un campo non è valido, un campo obbligatorio è vuoto, non si è connessi alla rete o si riscontra qualsiasi altro problema.In this app, an error occurs when the value of a field is not valid, a required field is blank, you're disconnected from the network, or any number of other problems pop up.

In caso di esito negativo di SubmitForm per qualsiasi motivo, la proprietà Error del controllo modulo di modifica contiene un messaggio di errore da visualizzare all'utente.If SubmitForm fails for any reason, the Error property of the Edit form control contains an error message to show the user. Con queste informazioni, l'utente potrà correggere il problema e inviare di nuovo la modifica oppure annullare l'aggiornamento.With this information, the user should be able to correct the issue and resubmit the change, or they can cancel the update.

  1. Nella schermata di creazione e modifica, aggiungere un controllo Etichetta e spostarlo immediatamente sotto il pulsante Salva.On the Edit and Create screen, add a Label control, and move it just below the Save button.

    Qualsiasi errore sarà facilmente visibile dopo che l'utente seleziona questo controllo per salvare le modifiche.Any error will be easy to see after the user selects this control to save changes.

  2. Impostare la proprietà Text del controllo Etichetta in modo da visualizzare Form1.Error.Set the Text property of the Label control to show Form1.Error.

Modulo di visualizzazione con aggiunta del pulsante "Modifica"

In un'app generata da PowerApps dai dati, la proprietà AutoHeight di questo controllo è impostata su true in modo da non utilizzare alcuno spazio se non si verificano errori.In an app that PowerApps generates from data, the AutoHeight property on this control is set to true so that no space is consumed if no error occurs. Le proprietà Height e Y del controllo modulo di modifica, inoltre, vengono regolate dinamicamente per tenere conto della crescita del controllo in caso di errore.The Height and Y properties of the Edit form control are also adjusted dynamically to account for this control growing when an error occurs. Per altri dettagli, generare un'app dai dati esistenti ed esaminare queste proprietà.For more details, generate an app from existing data, and inspect these properties. Dato che il controllo casella di testo per gli errori è molto piccolo quando non si è verificato alcun errore, per selezionare questo controllo potrebbe essere necessario aprire la visualizzazione Avanzate, disponibile nella scheda Visualizza.The text-box control for errors is very short when no error has occurred, you may need to open the Advanced view (available on the View tab) to select this control.

Modulo di modifica dell'app dai dati con controllo testo di errore selezionato

Modulo di modifica dell'app dai dati con controllo modulo selezionato

Aggiornare i datiRefresh data

L'origine dati viene aggiornata ogni volta che l'utente apre l'app. L'utente, tuttavia, potrebbe voler aggiornare i record nella raccolta senza chiudere l'app.The data source is refreshed whenever the user opens the app, but the user might want to refresh the records in the gallery without closing the app. Aggiungere un pulsante Aggiorna in modo che l'utente possa selezionarlo per aggiornare manualmente i dati:Add a Refresh button so that the user can select it to manually refresh the data:

  1. Nella schermata con il controllo raccolta aggiungere un controllo pulsante e impostarne la proprietà Text in modo da visualizzare Aggiorna.On the screen with the Gallery control, add a Button control and set its Text property to show Refresh.
  2. Impostare la proprietà OnSelect di questo controllo su questa formula:Set the OnSelect property of this control to this formula:
    Refresh( 'Ice Cream' )Refresh( 'Ice Cream' )

Aggiornare l'origine dati

Nell'app generata da PowerApps dai dati, non sono stati esaminati due controlli nella parte superiore della schermata di esplorazione.In the app that PowerApps generated from data, we neglected to discuss two controls at the top of the Browse screen. Usando questi controlli, l'utente può cercare uno o più record, ordinare i record in senso crescente o decrescente o eseguire entrambe le operazioni.By using these controls, the user can search for one or more records, sort the list of records in ascending or descending order, or both.

Ordinamento e ricerca nei controlli nella schermata di esplorazione

Quando l'utente seleziona il pulsante di ordinamento, l'ordinamento della raccolta viene invertito.When the user selects the sort button, the sort order of the gallery reverses. Per creare questo comportamento, si usa una variabile di contesto per tenere traccia della direzione di ordinamento della raccolta.To create this behavior, we use a context variable to track the direction in which the gallery is sorted. Quando l'utente seleziona il pulsante, la variabile viene aggiornata e la direzione viene invertita.When the user selects the button, the variable is updated, and the direction reverses. La proprietà OnSelect del pulsante di ordinamento viene impostata su questa formula: UpdateContext( {SortDescending1: !SortDescending1} )The OnSelect property of the sort button is set to this formula: UpdateContext( {SortDescending1: !SortDescending1} )

La funzione UpdateContext crea la variabile di contesto SortDescending1, se non esiste già.The UpdateContext function creates the SortDescending1 context variable if it doesn't already exist. La funzione leggerà la variabile e la imposterà sul valore logico opposto usando l'operatore !The function will read the value of the variable and set it to the logical opposite by using the ! .operator. Se il valore è true, diventa false.If the value is true, it becomes false. Se è false, diventa true.If the value is false, it becomes true.

La formula per la proprietà Items del controllo raccolta usa questa variabile di contesto, insieme al testo nel controllo TextSearchBox1:The formula for the Items property of the Gallery control uses this context variable, along with the text in the TextSearchBox1 control:

Gallery1.Items = Sort( If( IsBlank(TextSearchBox1.Text),
                           Assets,
                           Filter( Assets,
                                   TextSearchBox1.Text in Text(ApproverEmail) ) ),
                        ApproverEmail,
                        If(SortDescending1, Descending, Ascending) )

Di seguito vengono esaminati i singoli elementi:Let's break this down:

  • All'esterno si trova la funzione Sort, che accetta tre argomenti: una tabella, un campo in base al quale eseguire l'ordinamento e la direzione di ordinamento.On the outside, we have the Sort function, which takes three arguments: a table, a field on which to sort, and the direction in which to sort.

    • La direzione di ordinamento è ricavata dalla variabile di contesto attivata/disattivata quando l'utente seleziona il controllo ImageSortUpDown1.The sort direction is taken from the context variable that toggles when the user selects the ImageSortUpDown1 control. Il valore true/false viene convertito nelle costanti Descending e Ascending.The true/false value is translated to the constants Descending and Ascending.
    • Il campo in base al quale eseguire l'ordinamento è fisso ed è impostato su ApproverEmail.The field to sort on is fixed to ApproverEmail. Se si modificano i campi visualizzati nella raccolta, è necessario modificare anche questo argomento.If you change the fields that appear in the gallery, you'll need to change this argument too.
  • All'interno si trova la funzione Filter, che accetta una tabella come argomento e un'espressione da valutare per ogni record.On the inside, we have the Filter function, which takes a table as an argument and an expression to evaluate for each record.

    • La tabella è l'origine dati non elaborata Assets, che rappresenta il punto di partenza prima dell'applicazione del filtro o dell'ordinamento.The table is the raw Assets data source, which is the starting point before filtering or sorting.
    • L'espressione cerca un'istanza della stringa contenuta in TextSearchBox1 all'interno del campo ApproverEmail.The expression searches for an instance of the string in TextSearchBox1 within the ApproverEmail field. Anche in questo caso, se si modificano i campi visualizzati nella raccolta, è necessario aggiornare anche questo argomento.Again, if you change the fields that appear in the gallery, you'll also need to update this argument.
    • Se il controllo TextSearchBox1 è vuoto, l'utente vuole visualizzare tutti i record e la funzione Filter viene ignorata.If TextSearchBox1 is empty, the user wants to show all records, and the Filter function is bypassed.

Questo è solo un esempio. È possibile creare una formula personalizzata per la proprietà Items in base alle esigenze della propria app, combinando Filter, Sort e altri operatori e funzioni.This is but one example; you can craft your own formula for the Items property, depending on the needs of your app, by composing Filter, Sort, and other functions and operators together.

Progettazione della schermataScreen design

Non sono stati finora esaminati altri modi per distribuire i controlli nelle schermate,So far, we haven't discussed other ways to distribute controls across screens. perché le opzioni disponibili sono numerose e la selezione ottimale dipende dalle esigenze dell'app specifica.That's because you have many options, and the best selection depends on your specific app's needs.

Dato che lo spazio presente sugli schermi dei telefoni è limitato, è probabile che si voglia eseguire l'esplorazione, la visualizzazione e la modifica/creazione in schermate diverse.Because real estate on phone screens is so limited, you probably want to browse, display, and edit/create on different screens. In questo argomento, ogni schermata viene aperta dalle funzioni Navigate e Back.In this topic, the Navigate and Back functions open each screen.

Su un tablet, è possibile eseguire l'esplorazione, la visualizzazione e la modifica/creazione in due schermate o anche in una sola.On a tablet, you can browse, display, and edit/create on two or even one screen. Nel secondo caso, non sono necessarie funzioni Navigate o Back.For the latter, no Navigate or Back function would be required.

Se l'utente usa la stessa schermata, è necessario assicurarsi che non possa modificare la selezione nella raccolta perdendo potenzialmente le modifiche nel controllo modulo di modifica.If the user is working on the same screen, you need to be careful that the user can't change the selection in the Gallery and potentially lose edits in the Edit form control. Per impedire all'utente di selezionare un diverso record quando le modifiche a un altro record non sono ancora state salvate, impostare la proprietà Disabled della raccolta su questa formula:To keep the user from selecting a different record when changes to another record haven't been saved yet, set the Disabled property of the gallery to this formula:
EditForm.Unsaved EditForm.Unsaved