Create a Multi-Dropdown Filter for Your Power Apps Gallery
Learn how to build a flexible gallery filter using multiple dropdowns, a blank-option pattern, and delegation-safe formulas.
Effective filtering is crucial in Power Apps galleries to help users quickly find what they need among hundreds or thousands of records. A common requirement is to filter by multiple criteria using dropdowns that let users select one option at a time from a preset list. This article walks you through building a gallery filtered by three dropdowns, using a delegation-friendly pattern that works with SharePoint lists and other data sources with delegation limits. You'll also learn how to include a blank option in dropdowns so users can clear a filter and show all records.
Scenario: The "Hardware Inventory" App
We'll build a simple asset tracking app where employees can browse the company's hardware inventory. The SharePoint list called Hardware Inventory contains these columns:
- ItemName – Single line of text (e.g., "Dell Latitude 5420")
- Category – Choice (Laptop, Monitor, Keyboard, Mouse, Docking Station)
- Status – Choice (In Stock, Assigned, Retired)
- Location – Choice (Main Warehouse, R&D Lab, Sales Floor)
- PurchaseDate – Date only
Sample data:
| ItemName | Category | Status | Location | PurchaseDate |
|---|---|---|---|---|
| Dell Latitude 5420 | Laptop | Assigned | Sales Floor | 2025-03-10 |
| HP EliteDisplay E241 | Monitor | In Stock | Main Warehouse | 2025-01-22 |
| Logitech MX Keys | Keyboard | Assigned | R&D Lab | 2025-02-14 |
| Microsoft Arc Mouse | Mouse | Retired | Main Warehouse | 2024-11-05 |
| Lenovo ThinkPad X1 | Laptop | In Stock | Main Warehouse | 2025-05-01 |
Creating the Gallery and Dropdown Controls
Open Power Apps Studio and create a blank canvas app. Add a connection to the Hardware Inventory SharePoint list. Insert a vertical gallery and set its data source to the list. Show the fields ItemName, Category, Status, Location, and PurchaseDate in the gallery layout.
Above or beside the gallery, add three dropdown controls and name them ddlCategory, ddlStatus, and ddlLocation. Your screen should resemble a filter panel with the gallery below.
Populating Dropdowns with a Blank Option
Users need a way to clear a filter and see all records. The simplest approach is to offer a blank entry at the top of each dropdown. You can hardcode options when the choice list is static and small, or pull unique values dynamically for columns that may change.
Static Choices: ddlCategory and ddlStatus
For ddlCategory and ddlStatus, set their Items property to a table that starts with a blank:
[Blank(), "Laptop", "Monitor", "Keyboard", "Mouse", "Docking Station"]
[Blank(), "In Stock", "Assigned", "Retired"]
Dynamic Choices: ddlLocation
Because new locations may be added to the SharePoint list, it's better to pull the current list of unique values every time the app loads. The pattern below uses Distinct but wraps the result in an ungrouped table to insert a blank row at the top.
Ungroup(
Table(
{TempTable: Table({Result: Blank()})},
{TempTable: Distinct('Hardware Inventory', Location)}
),
"TempTable"
)The Distinct function is not fully delegable with SharePoint lists. If your inventory list can exceed 2,000 items, use a collection to store unique values at app start instead of placing Distinct directly in the Items property.
For large lists, create a collection in App.OnStart:
ClearCollect(colLocations, Distinct('Hardware Inventory', Location));Then set the dropdown's Items to:
Ungroup(
Table(
{TempTable: Table({Result: Blank()})},
{TempTable: colLocations}
),
"TempTable"
)Connecting the Filter Formula
Now make the gallery respond to all three dropdowns. Set the gallery's Items property to a single Filter that includes a condition for each dropdown. The pattern uses short-circuit Or logic: if the dropdown selection is blank, ignore that filter; otherwise, match the column.
Filter( 'Hardware Inventory', ddlCategory.Selected.Value = Blank() Or Category = ddlCategory.Selected.Value, ddlStatus.Selected.Value = Blank() Or Status = ddlStatus.Selected.Value, ddlLocation.Selected.Value = Blank() Or Location = ddlLocation.Selected.Value )
With this formula, when all three dropdowns are blank, the gallery shows every record. Selecting a value in any dropdown instantly narrows the list to matching items only.
Delegation and Performance Notes
- The
Filterwith equality checks andBlank()comparisons is fully delegable for SharePoint text and choice columns. Power Apps sends these conditions to the data source, so even lists with hundreds of thousands of rows can be filtered efficiently. - The Items of the gallery remains delegation-safe as long as you don't add non-delegable functions like
DistinctorSearchinside the filter arguments. - For the location dropdown, using a collection bypasses repeated delegation calls to get distinct values. This is the recommended approach for production apps with large datasets.
- If you ever need to add a free-text search box alongside the dropdowns, consider using
StartsWithorSearchonly after applying the dropdown filters to maintain delegation where possible.
Common Mistakes and Troubleshooting
- Dropdown selection not filtering: Confirm that you are referencing
Selected.Value(orSelected.'Value'for text columns) and notSelected.Result. For choice columns in SharePoint, the selected item is a record; the displayed text is inside.Value. - Blank option not appearing: If you use a hardcoded table like
[Blank(), "A", "B"], ensure there is no syntax error. TheBlank()function must be the first element. TheUngroup(Table(...))pattern must have the exact nesting shown above. - Gallery not responding to filter changes: Verify that the gallery's Items property is set to the formula above and not overridden by another rule (e.g., a
ResetorNavigateaction that clears the dropdowns). - Delegation warnings: Open the App Checker panel and look for yellow triangles. If the gallery or a dropdown shows a delegation warning, consider moving non-delegable operations (like
Distinct) into collections or using a delegable data source.
Final Recommendation
A multi-dropdown filter with a blank option is a clean, user-friendly way to browse data in Power Apps galleries. Stick to the Filter(..., Or(...)) pattern for delegable filtering and handle dynamic dropdown options via collections when your list size may exceed delegation limits. This approach keeps your app fast, scalable, and easy to maintain.
References
- Original article by Matthew Devaney: Power Apps Filter Gallery With Multiple Dropdowns
- Microsoft Power Apps delegation overview: Understand delegation in a canvas app (placeholder – verify the exact URL)
- Filter function reference: Filter in Power Apps (placeholder)
Learn how small coding practices—like using descriptive names, flattening conditions, and simplifying logic—can make your apps easier to update and less error-prone.
Move past the gallery and discover the hidden patterns for validation, navigation, and smart submission handling in your data entry forms.
PowerShell unlocks admin capabilities that the Power Platform admin center simply doesn’t offer—from recovering deleted apps to blocking trial licenses. Here’s how to wield them safely.