If you work with Dataverse and Power Apps Canvas apps, you will very often need to save or update choice values from your app back to a Dataverse table.
In this Power Apps tutorial, we will walk through everything you need to know to patch Dataverse choice columns from Power Apps, using simple examples and clear explanations.
We will cover both single‑choice and multiple-choice fields, from edit forms to standalone controls like dropdowns and combo boxes. We will also look at common errors and some practical best practices that will save you a lot of time.
Patch Dataverse Choice Column in Power Apps
In this tutorial, we will use a Dataverse table called Patient Registrations. This table contains columns such as Patient Name, Patient Phone Number, DOB, Age, Address, and a few choice columns.
Key columns we will use:
| Column | Data type |
|---|---|
| Patient Name | Primary column, single line of text |
| DOB | Date |
| Age | Whole number |
| Address | Multi‑line text |
| Reason | Choice column with multi‑select enabled, used to store patient disease reasons like High Blood Pressure, Diabetes, Heart Issues, etc.![]() |
| Marital Status | Choice column with single‑select, with values like Married, Single, Divorced, Widowed. |

You can imagine a simple registration app where a user fills out an edit form and clicks the “REGISTER” button to save the record in the Patient Registrations table.
For multi‑choice fields such as Reason, we use a combo box on the form so the user can select multiple values.

Connect Power Apps to Dataverse
Before patching, you must connect your app to the Dataverse table.
- Open your Power Apps Canvas app in Power Apps Studio.
- Select the Data tab on the left.
- Search for Dataverse, then add your table Patient Registrations as a data source.

Once connected, you can either use an Edit form bound to this table or patch directly from controls like text inputs, dropdowns, and combo boxes.
Patch Multi‑Choice Dataverse Column From a Power Apps Edit Form
Let’s start with a scenario where you patch a multi‑select choice column (Reason) from a Power Apps edit form.
You have:
- An EditForm control bound to
'Patient Registrations'. - Data cards for Patient Name, Phone, DOB, Age, and Address.
- A Power Apps combo box in the Reason data card that allows multiple selections. Its update control is something like
DataCardValue5. - A REGISTER button that will save a new record.
Set the button’s OnSelect property like this:
Patch(
'Patient Registrations',
Defaults('Patient Registrations'),
{
'Patient Name': DataCardValue1.Text,
'Patient Phone Number': DataCardValue6.Text,
DOB: DateValue1.SelectedDate,
Age: Value(DataCardValue3.Text),
Address: DataCardValue4.Text,
Reason: DataCardValue5.SelectedItems
}
)

What is happening here:
Defaults('Patient Registrations')tells Power Apps to create a new record in the table.- Text and number fields take simple values like
.TextorValue(..). Reasonis a multi‑choice column, and the combo box is configured to show those Dataverse choices.DataCardValue5.SelectedItemsreturns a table of choice records, which matches what the multi‑select column expects.
As long as the combo box Items property is bound to the right choice set (for example Choices('Patient Registrations'.Reason)), this will patch the selected items correctly.
After you save and publish the app, run it, fill the form, select multiple Reason values in the combo box, and click REGISTER.

When you refresh the Patient Registrations table in Dataverse, you will see the Reason column updated with all selected values.

Patch a Dataverse Single‑Choice Column
Now let’s look at a Dataverse single‑choice column like Marital Status. In this example, we want to update the Marital Status of a specific patient, say Christiana, using a simple button in the app.

Add a Power Apps Button to the screen and set its OnSelect property like this:
Patch(
'Patient Registrations',
First(
Filter(
'Patient Registrations',
'Patient Name' = "Christiana"
)
),
{
'Marital Status': 'Select Marital Status '.Married
}
)

Explanation:
Filter('Patient Registrations', 'Patient Name' = "Christiana")finds all records where Patient Name is Christiana.First(...)returns the first matching record, which becomes the BaseRecord for Patch.'Marital Status'is your Dataverse single‑choice column.'Marital Status'.Marriedis using the choice display name (Select Marital Status) and the specific choice value (Married).
Power Apps recognises this syntax because the choice is defined as a set of options in Dataverse, and the editor will show those values when you type a dot after the choice display name.

You can easily adapt this same pattern when you want to patch other single‑choice columns such as Status, Priority, or Category.
Patch Multi‑choice Dataverse Column Using Explicit Values
In the earlier example, we patched the multi‑choice column Reason using DataCardValue5.SelectedItems from the form. Sometimes, though, you may want to update a specific record and directly set certain reason values from your formula.
Suppose we want to update the Reason for a patient named Patriot and set the values to Diabetes and Fever.

The Power Apps Button’s OnSelect could be:
Patch(
'Patient Registrations',
First(
Filter(
'Patient Registrations',
'Patient Name' = "Patriot"
)
),
{
Reason: [
'Patient Disease Reason'.Diabetes,
'Patient Disease Reason'.Fever
]
}
)
Here:
Reasonis the multi‑choice column.'Patient Disease Reason'is the choice display name associated with the Reason column.- The square brackets
[...]create a table of choice values, which is what a multi‑select column expects.

When you run the app and click the button, then refresh the Dataverse table, you will see the Reason column for Patriot updated with the selected values.

Patch Dataverse Single‑Choice Column From Power Apps Dropdown
Sometimes you are not using an edit form, but just standalone controls. For a single‑choice column, a very common pattern is to use a dropdown bound to the Dataverse choice set.
- Insert a Power Apps Dropdown control and rename it something like
ddMaritalStatus. - Set its Items property to:
Choices('Patient Registrations'.'Marital Status')- Set the dropdown’s Value property (in the right pane) to
Value, so it shows the label for each choice.
Now, to patch this into Dataverse when creating a new record, you can write:
Patch(
'Patient Registrations',
Defaults('Patient Registrations'),
{
'Patient Name': txtName.Text,
'Marital Status': ddMaritalStatus.Selected
}
)
Because the dropdown is bound to the choice set, ddMaritalStatus.Selected is already the correct choice record that the single‑choice column expects. You do not need to wrap it in {Value: ...} manually.
If you are not using a dropdown bound to Choices(...) And instead of using a plain-text dropdown, you would need to map the value manually. In real apps, it is always better to bind to the Dataverse choice set.
Patch Dataverse Multi‑Choice Column From Power Apps Combobox
For Dataverse multi‑choice columns, the most convenient control is the Power Apps combo box with multi‑select enabled.
- Insert a Power Apps combo box and rename it to
cmbReason. - Set Items to:
Choices('Patient Registrations'.Reason)- In the right pane, turn on Allow multiple selection.
- Set Primary text or DisplayFields to
["Value"]so users see the label of each choice.
To patch Reason when saving a record, you can simply do:
Patch(
'Patient Registrations',
Defaults('Patient Registrations'),
{
'Patient Name': txtName.Text,
Reason: cmbReason.SelectedItems
}
)
cmbReason.SelectedItems is a table of choice records, and Dataverse will store them in the multi‑select choice column. This is the same idea you used in the edit form example with DataCardValue5.SelectedItems.
If you ever see a type mismatch error, double‑check that:
- The combo box is bound to
Choices('Patient Registrations'.Reason)and not a text collection. - The Reason column in Dataverse is actually configured as Multi Select Choice, not single choice.
Update Existing Records With Power Apps Patch
We already saw two examples of updating a specific patient using Filter and First. Here is a more generic pattern that you can reuse:
Patch(
'Patient Registrations',
LookUp(
'Patient Registrations',
'Patient Name' = txtSearchName.Text
),
{
Reason: cmbReason.SelectedItems,
'Marital Status': ddMaritalStatus.Selected
}
)
LookUpfinds a single record that matches the condition.- You can update several columns in the same Patch call, including text, date, number, and choice fields.
- If
LookUpdoes not find anything, Patch will not create a new record in this pattern, so it is often useful to validate first or show a message if no record is found.
This pattern keeps your formulas clean and makes it easier to control updates from the screen.
You have now seen how to patch both single‑choice and multi‑choice Dataverse columns from Power Apps, using edit forms, dropdowns, and combo boxes. You also saw how to find and update specific records and how to avoid common type-mismatch errors.
Also, you may like some more Power Apps and Dataverse tutorials:
- Display Dataverse Choices in Power Apps Gallery
- Power Apps Get Value Of Choice Field Dataverse
- Patch Power Apps Date Picker
- Display “Time Ago” Labels in Power Apps

Preeti Sahu is an expert in Power Apps and has over six years of experience working with SharePoint Online and the Power Platform. She is the co-author of Microsoft Power Platform: A Deep Dive book. As a Power Platform developer, she has worked on developing various tools using Power Apps and Power Automate. She also makes Microsoft 365 videos and shares them on YouTube.

Very good post, Thank you.
I’ve use a gallery instaed of dropdown to update my choices field, it works well.