Choice columns are among the most widely used field types in SharePoint, Dataverse, and other data sources. They appear as dropdowns, radio buttons, or combo boxes in Power Apps.
But working with Choice fields can sometimes get tricky — especially when dealing with records, tables, and display/value pairs.
This article covers everything you need to know about the most important functions: Value, Choices, LookUp, Filter, Patch, and more — with clean code snippets.
1. Understanding Choice Fields in Power Apps
A Choice field is not a text value — it is a record that usually contains:
{
"Value": "Approved"
}
So when you access a choice column, you must use:
ThisItem.Status.Value
Not:
ThisItem.Status
2. Using the Choices() Function
The Choices() function retrieves all possible options of a choice field.
Example: Show all choices in a dropdown
Items: Choices(SharePointList.Status)
Set default selection
DefaultSelectedItems: [ { Value: "Pending" } ]
3. Reading the Value of a Choice Column
To read the selected choice from a form or gallery:
Gallery Example
ThisItem.Status.Value
Edit Form Example
DataCardValue_Status.Selected.Value
4. Filtering Using Choice Values
When filtering with a choice field, always use .Value.
Filter items by a specific choice
Filter(SharePointList, Status.Value = "Approved")
Filter using a dropdown control
Filter(
SharePointList,
Status.Value = DropdownStatus.Selected.Value
)
5. LookUp with Choice Fields
LookUp(
SharePointList,
Status.Value = "Pending"
)
Using selected choice
LookUp(
SharePointList,
Status.Value = ddStatus.Selected.Value
)
6. Patch Choice Fields
When patching, you must pass a record, not a text value.
Patch(
SharePointList,
Defaults(SharePointList),
{
Status: { Value: "Approved" }
}
)
Or patch selected value:
Patch(
SharePointList,
ThisItem,
{ Status: ddStatus.Selected }
)
7. Patch Multiple Choice Field
For multi-select choice columns, the value must be a table of records.
Patch(
SharePointList,
ThisItem,
{
Tags: [
{ Value: "High" },
{ Value: "Urgent" }
]
}
)
Or binding to a ComboBox:
Patch(
SharePointList,
ThisItem,
{ Tags: ComboBoxTags.SelectedItems }
)
8. Using Choice Field in Galleries
Show text of the choice:
ThisItem.Priority.Value
Sort gallery by a choice field:
Sort(
SharePointList,
Priority.Value,
Ascending
)
9. DisplayMode Logic with Choice Fields
Disable a control based on choice:
DisplayMode = If(
ddStatus.Selected.Value = "Approved",
DisplayMode.Disabled,
DisplayMode.Edit
)
10. Using Choice Fields in Forms
Set Default in New Form
UpdateContext({ defaultStatus: { Value: "Pending" }});
DataCardValue_Status.DefaultSelectedItems = [defaultStatus]
Set Default for Edit Form
Already comes from the item, so use:
Parent.Default
Conclusion:
Working with Choice fields becomes easy once you understand that each choice is a record with a Value property. Using the right functions—such as Choices() for loading options, .Value for filtering, and Patch for updating—you can confidently build apps that interact smoothly with SharePoint or Dataverse choice columns.