Originariamente inviato da simo
Forse mi sbaglio (o non capisco bene cosa vuoi ottenere) ma mi sembra che tu stia enormemente complicando una procedura che in ASP.NET è semplicissima.

Per fare quello che serve a te, e cioè estrarre dati da un database, avere la possibilità di contarli, di gestirli campo per campo e di visualizzarli in un datagrid io opterei per un dataset.

Invece di usare un datareader con il quale popolare successivamente una datatable, io userei un DataAdapter con il quale popolerei un DataSet.

A quel punto puoi passare al GridView il DataSet come DataSource e al resto pensa ASP.NET
Mi faresti un esempio del codice che ti ho postato ma utilizzando i dataset?