The Problem: You are trying to create an ASP.net GridView that automatically populates on any dataset, as well as automatically sorts, but for some reason whenever you click the headers to sort the GridView, the data doubles.
The Cause: I originally omitted crucial line
gv.Columns.Clear();
in the code sample below. For whatever reason I got it stuck in my head that the data was doubling, not the columns.