A very simple solution is to create a contextobject with search attributes around your grid. A simple example, I have a person entity on which I want to filter on gender.
On my page I surround my data grid with microflow as datasource with a contextsearch object. How isn't important, you can retrieve a contextsearch from datasource microflow or you can create one when opening the page and passing it onto the page:
As you can see i placed the gendersearch attribute onto the page and then I pass the ContextSerach object to the datagrid datasource microflow. In my example I kept it simple, I check if the gendersearch attribute is filled or not, if filled i filter the list and return the filtered list, if not filled i just return the regular list.
As you can see this is a very simple example, with list operations etc you can achieve a lot of possibilities.
Do you really need a microflow as source, or could you also get your data using xpath? If so, that would be the easier solution.
If not, you could create a wrapper object in a dataview around your grid. This wrapper object could have your enumeration and you could show the enum dropdown above your datagrid. The datagrid would now also be filled by using a microflow (and use the selection on the wrapper object). If nothing is selected, the microflow returns the full list. If something is selected, the microflow should return the filtered list.
You only need to refresh your wrapper object when you change the selection, so that the grid is refreshed as well.