When the Actions > Download action is invoked, does the interactive grid fetch data from the database or does it already have all the data it needs in the client model?
In this case IG will definitely get data from the server, not from client. You can enable the Debug Mode to see that.
Anyway, is there a way to mark the downloaded records as downloaded either in the client model or on the server?
What are you trying to solve? Why would you like to download data that comes from the model?
The use case is as follows - IG download dialog offers a Email function that automatically attaches the CSV file to the email. When this function is used (or in the more general case, even when the CSV file is just downloaded), from an audit perspective (if someone emails highly classified information from the report to a competitor!), I would like to record exactly what data (primary keys of records) was downloaded so the base table(s) can be updated and such. If one of the columns visible in the current view/report is updated, the report should also refresh to reflect the updated data.
This is specific to a saved report. In other words, if the IG has multiple alternative reports defined at design time, the record download/email applies to only some saved reports, the ones that contain sensitive information.
Taking the example of our famous EMP table, let's say the Notes column should be updated to say Data downloaded on <sysdate> when the Actions > Download function is used.