Power Apps  

Working With SharePoint Choice Columns in Power Apps

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.