We need a design layer that captures the screen before Power Apps turns it into controls and properties.
For this POC, let's keep three note layers:
-
Design notes
What the user sees and how the page flows.
Centre Summary Screen
[ Centre dropdown ]
CENTRE / INFO
- Centre Name
- Address
- Phone
- Hours
- Notes
- Edit button
CONTACTS
- Contact Name
- Role
- Phone
- Email
- Repeat for each matching contact
REGION
- Region Name
- Region Contact
- Regional HoursForms for multiline
A form gives you three conveniences at once: field layout, edit state, and record submission. Instead of wiring ten separate text inputs by hand, you let the form manage the data cards and then your buttons become very simple.
For example:
SubmitForm(frmCentreInfo)for Save, and:
ResetForm(frmCentreInfo)for Cancel.
If you want a Back button after saving:
SubmitForm(frmCentreInfo);
Back()
Although a slightly safer pattern is to put the navigation in the form’s OnSuccess property:
Back()Then the Save button is only:
SubmitForm(frmCentreInfo)That way you only leave the screen if the save actually succeeds.
Switch to edit mode:
EditForm(frmCentreInfo)So the whole interaction becomes much cleaner:
View record
↓
Edit button
↓
EditForm(frmCentreInfo)
↓
Save
↓
SubmitForm(frmCentreInfo)
↓
OnSuccess → Back()Centre/Info section:
Single-record Form: View → Edit → Save/Cancel
and the Contacts section as:
Related-record Gallery: one-to-many
-
Data notes
What table supplies each section and how they relate.
CentreInfo
- one record selected by dropdown
- displayed in Form
Contacts
- separate table
- many records per Centre
- relationship: Centre Name
Regions
- separate table
- relationship still to be defined-
Implementation notes
The actual Power Apps controls and formulas.
ddCentre
Items = CentreInfo
frmCentreInfo
DataSource = CentreInfo
Item = ddCentre.Selected
galContacts
DataSource = Contacts
Items =
Filter(
Contacts,
'Centre Name' = ddCentre.Selected.'Centre Name'
)
what it should look like → what data supports it → how Power Apps implements it.
DATA SOURCES
CentreInfo
- one table
- contains Centre + Info fields
- one selected record drives the top part of the screen
Contacts
- separate table
- many rows can match one Centre
- relationship key = Centre Name
Regions
- separate table
- list of regions TBD
And yes, all of that can live on one screen.
A clean screen structure would be:
Screen: Centre Summary
Vertical container
├── Centre dropdown
│ Items = CentreInfo
│
├── Centre / Info form
│ Data source = CentreInfo
│ Item = selected Centre record
│
├── Contacts gallery
│ Data source = Contacts
│ Items =
│ Filter(
│ Contacts,
│ 'Centre Name' = ddCentre.Selected.'Centre Name'
│ )
│
└── Region section
Data source = Regions
Item / Items = relationship to selected Centre
If the dropdown is already selecting the actual CentreInfo record, we may not even need a LookUp() for the Centre/Info block. We can simply use:
CentreInfoForm.Item = ddCentre.SelectedThat is cleaner.
Then Contacts becomes the one-to-many relationship:
ContactsGallery.Items =
Filter(
Contacts,
'Centre Name' = ddCentre.Selected.'Centre Name'
)So the core model is now:
CentreInfo
1
│
│ Centre Name
│
∞
Contactsand later:
CentreInfo
1
│
│ Centre Name / Region key
│
1 or ∞
RegionsUse one vertical container and put the Centre/Info form, Contacts gallery, and Region section inside it. (Single record Form, multi line Gallery).
📝 Note: No separate screens required unless the app grows much larger
We get exactly what we need: one selected Centre, one screen, several related data sources.
And that is the basis for the template.