15
Views
2
Comments
Data Grid SetColumnFilterOptions not working on Actions column

Hello, We are trying to implement the data grid component in our O11 reactive app. Two of the columns we are using are action columns because we need them to link to other pages.

We have the grid set to Server side pagination because of the large data set and are trying to set the filter by value options with SetColumnFilterOptions, but it doesn't work for action columns as the code says.

We can override this easily enough with Javascript to change the filter type of the column, but wanted to ask why is it being blocked in Outsystems code and is it safe to do that without experiencing any unattended errors because the filter by value filtering works fine for actions columns when server side pagination is set to false.


A secondary question I have is there a way to a do a lazy load for the filter by values tab. I think this would be really beneficial for large datasets and you still want to supply searchable options in the filter by value tab so they don't have to do a conditional search for everything.

2019-11-11 17-10-24
Manish Jawla
 
MVP

Hi @Douglas Mumme ,

SetColumnFilterOptions doesn’t work on Action columns because those columns don’t actually hold data values. They just contain buttons or links, so the grid doesn’t support “filter by value” for them. This is especially true when you’re using server-side pagination, where filtering is already more limited.

Even though the API exists, the Data Grid intentionally ignores filter options for Action columns. You can force it with custom JavaScript, but that’s unsupported and could break with future OutSystems updates.

If you need filtering, the safest option is to use a Text or Dropdown column (and handle navigation from there). Otherwise, Action columns simply aren’t meant to be filterable.

Regards,

Manish Jawla

2026-03-20 01-28-51
Saugat Biswas

Hi @Douglas Mumme,

This is an intentional design constraint of the OutSystems Data Grid, not an arbitrary limitation, and it’s good that you checked the source code before overriding it.

Now you may ask why?

It’s by design, and it’s blocked to prevent incorrect semantics and data‑consistency issues when server‑side pagination is enabled.

The real reason is architectural, not technical.

With server‑side pagination: 

  • The grid does NOT have the full dataset in memory 
  • Filtering must be logically representable server‑side 
  • Filter‑by‑value assumes: 
    • A stable scalar value 
    • A direct mapping to a query filter

 Action columns: 

  • Do not represent data 
  • Are UI constructs (links, buttons, navigations) 
  • Often contain: 
    • Computed labels 
    • Concatenations 
    • Conditional logic 
    • Client-side click behaviors 

So from the grid’s perspective: 

  • “Filtering by value on an Action column has no guaranteed mapping to the dataset or backend query.” 

That’s why this is blocked only when server‑side pagination is ON, the grid cannot safely reconcile client‑side value filters with server queries.

Is it safe to override this restriction with JavaScript? 

  • Technically: yes
  • Architecturally: risky (and unsupported)

To answer your second question, you’re absolutely right, this would be valuable, but currently it is not supported. As per documentation:

Filter‑by‑value using SetColumnFilterOptions requires pre‑computed values and can cause performance issues with large datasets

Current limitations 

  • Filter options must be provided in full 
  • No lazy / incremental loading 
  • No server callback when typing

Alternative:

Replace “Filter by Value” with a searchable dropdown. Instead of column filter UI: 

  • Provide a dropdown / autocomplete outside the grid 
  • Query the backend incrementally 
  • Reload grid data based on the chosen filter 

This scales much better and aligns with real server‑side filtering.

Hope this helps.

Cheers,

Saugat

Community GuidelinesBe kind and respectful, give credit to the original source of content, and search for duplicates before posting.