Mike,
Not sure if this will help...but before you invoke your refresh method, you could grab the position from the grid's binding manager, store it, and then set the position back after the refresh.
Of course, if your refresh does something to change the rowcount in the datatable, you may not wind up at the exact row. Just a thought...
Kevin