Eu posso ver que você está preenchendo o GridView manualmente definindo as células de cada linha o valor que você obtém do datareader.
Mas, na verdade, você pode preencher a grade simplesmente:
GridView1.DataSource = dt
GridView1.DataBind()
GridView1.DataSource = dt
GridView1.DataBind()