Můžeš využívat cokoliv. Jen si to prostě musíš napsat sám. Můžeš si dotazem naplnit DataTable, nebo vlastní seznam objektů List<T> či cokoliv jiného, co implementuje IList, IListSource, IBindingList nebo IBindingListView.
Pak stačí jenom
dataGridView.DataSouce = muj_zdroj;
a grid se ti naplní daty.