I tried to reproduce this problem in the attached sample. There, when you click teh button, the a timer will fire in 3 seconds to reset the data. The the three seconds can be used to start editing a row or something in case the problem is related to the current state of the grid (like a row is being edited when you zap the data). But I could not come up with any set of actions that cause this exception.
So, what is different in the sample from what you are doing? The sample uses a nested datasource? is yours flat? Do you have columns grouped or sorted or have summaries or ??? Do you always see the exception? Is it reproduceable through a set of fixed steps? Are there multiple threads involved?
GGCNewDataSource_6118.zip