← Al Davies, 250 High Street

Cascading dropdown in a SharePoint list form

Short answer: a SharePoint list has no built-in cascading dropdown, because Microsoft's pages on the list form do not describe one. For filtered options, use a Power Apps custom form with a Filter formula on the child dropdown, which Microsoft documents as a dependent drop-down list. Without Power Apps, the closest option is show-if rules on separate Choice columns, which is not a true cascade.

What "cascading" means

A cascading dropdown (Microsoft also says dependent drop-down) works in two steps. A person picks a value in the first list. The second list then shows only the options that belong to that first value.

Examples:

The point is to stop wrong pairs, like a Detail of "Parking" on an "IT" request.

The two formulas, from Microsoft's example

Microsoft's Power Apps example stores parent and child values in a separate list called Locations, with a Location column and a Department column. Two formulas do the work.

In the example, ddLocation is the parent dropdown. Power Apps writes the second formula for you when you select the child dropdown and choose Depends on.

If the child dropdown shows duplicates, Microsoft says "To remove the duplication, wrap a Distinct function around the properly returning data."

To check the child dropdown, select it and read the Items property in the formula bar. It should show the Filter formula above, with your own list and column names.

Without Power Apps

Microsoft's pages do not show a way to filter the options of a Choice or lookup column by the value of another column in the built-in list form. The built-in form can show or hide a whole column based on another column's value. That is the closest option, and it is not a true cascade, because the person sees separate columns instead of one list that changes. Option 1 below explains the setup.

What Microsoft documents

Microsoft's page for the built-in form tools, "Show or hide columns in a list form", describes a conditional formula that shows or hides a column based on another column's value. That page does not describe filtering the options inside a dropdown.

Microsoft's page "Create list relationships by using lookup columns" describes how a lookup column pulls a value from a column in another list. It does not describe filtering the lookup by another column.

Microsoft's Power Apps page "Create a dependent drop-down list in a canvas app" does describe it. Users select an option in one list to filter the options in another list. The page uses a SharePoint list as the data source and a custom form, opened from the list with Integrate, then Power Apps, then Customize forms. Exact names may differ.

So the plain reading is this. In the built-in form, you get show-if rules and lookups. For true filtered options, Microsoft documents the Power Apps form.

Three ways to get close

Here is each option, with what it does and what it costs you.

Option 1. Show-if rules in the built-in form.

Option 2. A lookup column to a second list.

Option 3. A Power Apps form with a filtered dropdown.

Decision list

Use this order. Stop at the first line that fits.

  1. Do you have two or three first-level values with a few details each? Try Option 1, show-if rules. It needs no extra list. Our advice, not a Microsoft rule: this fits a short list of first-level values.
  2. Do you only need one list of details to pick from, and wrong pairs are not a problem? Use Option 2, a lookup column. See "SharePoint lookup column shows blank or too few fields".
  3. Do you need the second list to show only matching rows? Use Option 3, a Power Apps form.
  4. Is the second choice just a note nobody reports on? Keep it simple. Use one Choice column.

For a quick read on when a custom form is worth it, see "Power Apps or a SharePoint list form: which one do you need?".

Worked example: Request type, then Detail

The team runs an internal request list. Each request has a Request type and a Detail. The goal is that Detail shows only the details for the chosen type. This uses Option 3, because it is the one Microsoft documents for filtering.

The lists:

Microsoft's page creates the columns the form fills in as Single line of text. It says this simplifies configuration and avoids delegation warnings in Power Apps.

Rows in Request details:

Steps. Exact names may differ.

  1. Create the Request details list and add the six rows above.
  2. Open the Requests list. Choose Integrate, then Power Apps, then Customize forms.
  3. In the Fields pane, open the Request type field and change the Control type to Allowed Values. It becomes a Drop down control. Do the same for the Detail field.
  4. Add the Request details list as a data source in Power Apps.
  5. Select the Request type card. On the Advanced tab, choose Unlock to change properties. Do the same for the Detail card.
  6. Rename the two Drop down controls ddType and ddDetail so the formulas are easy to read.
  7. Set the Items property of ddType to Distinct('Request details', 'Request type'). Use your own list and column names, in single quotes if they have spaces.
  8. Select ddDetail. On the Properties tab, choose Depends on. Set the parent control to ddType with Result. Set the matching field to the Request type column of the Request details list. Select Apply.
  9. Power Apps sets the Items property of ddDetail to a Filter formula of this shape: Filter('Request details', 'Request type' = ddType.Selected.Result).
  10. On the Properties tab, set the Value of ddDetail to the detail name column.
  11. Test it. In Power Apps Studio, hold Alt, open the Request type list and pick a type, then open the Detail list. It should show only that type's details.
  12. Choose File, then Save, then Publish to SharePoint. Open the Requests list, choose New and check the form.

Two things from the same Microsoft page. If the child list shows duplicates, Microsoft says to wrap the returned data in a Distinct function. The Depends on setting does not work on controls that allow multiple selections, and it does not support static data or collections.

The simpler version of the same example

If the example has only two or three types, try Option 1 first.

  1. In the Requests list, make a Choice column named RequestType, with no space, and the values 1 IT, 2 Facilities and 3 HR. Then rename it to "Request type". The internal name stays RequestType.
  2. Make three Choice columns: "Detail (IT)", "Detail (Facilities)" and "Detail (HR)".
  3. Open any item, choose Edit form, then Edit columns. Exact names may differ.
  4. For "Detail (IT)", open the options menu (...) and choose Edit conditional formula.
  5. Enter: =if([$RequestType] == '1 IT', 'true', 'false')
  6. Repeat for the other two, using '2 Facilities' and '3 HR'.
  7. Save and test with a new item.

The text in quotes must match the choice exactly, including the number. The name in square brackets is the internal name of the column, which can differ from the name on screen.

The cost: you have three Detail columns in the list. Reports and views have to read all three.

What to avoid

When to keep it simple

Skip all of this and use one Choice column when:

A single Choice column with a clear name is easier to explain, easier to hand over and easier to fix.

If the real problem is that the form is long, see "Make the new-item form shorter: sections and show-if rules".

Test before you tell the team

  1. Make a test item for each first-level value.
  2. Check that the second choice shows only the matching options.
  3. Change the first value on an existing item. Check what happens to the second value. A value saved earlier may no longer match.
  4. Open the form as a person with limited access. Microsoft says people with only item-level permissions do not get a Power Apps customized form.
  5. Save, then open the item again to confirm both values were kept.

When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.

Tell me what's still manual

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: Tools I built

FAQ

Can I make a cascading dropdown in a SharePoint list without Power Apps?

Microsoft's pages do not show a way to filter one column's options by another in the built-in form. The closest option is a conditional formula that shows or hides separate Choice columns.

Is a dependent dropdown the same as a cascading dropdown?

Yes. Both mean one list filters another. Microsoft documents it for Power Apps custom forms, using a Filter formula on the child dropdown.

Can JSON formatting make a cascading dropdown in a list form?

Microsoft's page for the built-in form describes conditional formulas that show or hide a whole column. It does not describe filtering the options inside a dropdown.

What are the Power Apps formulas for a cascading dropdown?

Parent Items: Distinct(Locations, Location). Child Items: Filter(Locations, Location = ddLocation.Selected.Result). These come from Microsoft's example, so swap in your own names.

Can I filter a lookup column by another column?

Microsoft's lookup column page does not describe filtering. The lookup shows values from the source list. For a filtered second list, Microsoft documents the Power Apps form.

Can I use a Choice column as the source of a lookup?

Not per Microsoft's list of supported source types: Single line of text, Number, Date and Time, and Lookup (single value). Use a Single line of text column in the source list.

Sources