My suggestion is to first debug this via the browser's console. For me it works as expected
grid.on("dataFiltering", function(filters){
//filters - array of filters currently applied
console.log(`Pre-filter event: ${filters.length} filters`);
for (let i = 0 ; i < filters.length; i++)
console.log(Object.entries(filters[i]));
});
grid.on("dataFiltered", function(filters, rows){
//filters - array of filters currently applied
//rows - array of row components that pass the filters
console.log(`Post-filter event: ${rows.length} rows`);
for (let i = 0 ; i < rows.length; i++)
console.log(Object.entries(rows[i]));
});
If the console output is OK, then the issue may be with the Node-red messaging.
I noticed something which seems like a bug, where Node-red dashboard resends the last sent message upon page load.
Message sent once but received twice - Dashboard - Node-RED Forum (nodered.org)
Maybe the output you are getting is from an older event?.