I’ve had a similar problem when using some map widgets, where I wanted to display a non-committed list with locations on a map BEFORE committing, but the map required an XPath.
It could be worth making a duplicate “staging” table, in your domain model, where your pie chart reads from, and every time you refresh in your data grid, you commit the changes to your staging table. Then have a cleanup process (Like a leave action, or some kind of delete process when you enter the page) so you’re not just storing redundant duplicate data.
It’s not a perfect solution, and might not be ideal if you’re handling a massive amount of data, but this kind of solution has worked for me before, where I know the amount of data being handled is relatively low (no more than 200 rows).