DBGrig will only work as expected if all records from the current query are retrieved.
This can be enforced by increasing the PackedRecords property to such a large number that it always fetches all records, such as 1000000 (or more).
The only thing is that then it will take longer to execute the query (depending on the database performance, number of records, number of columns and their data size), because every time you open/refresh the DataSet, all the data will be retrieved, not 10, as by default.