I see two possibilities, both leveraging the SqlDataSource control.
Enabling caching on the SqlDataSource control is my favorite. This might not actually solve your problem, though. Setting the cache to something reasonable has the potential to speed up a lot of your page beyond the simple editing scenario, though, so I favor tweeking things there.
The second option would be to handle the Updating event on the SqlDataSource control. During the Updating event, you can set e.Cancel to true if you determine that you are under the influence of a post back for editing. Doing so will cause the update to be skipped. This might not actually work if the GridView relies on the update to remember the items pulled in a prior display request, though. I haven't used it recently enough to be certain if this is the case. If it is, you may end up having to handle the Updated event on initial page display and store the resulting data in a self-rolled faux-cache. You can see that this might get complicated fast...
Which you use (and how you use them) depends a lot on use case details. This should get you started looking in the right direction, though.