Si lo quieres hacer en un mismo grid, tendrías que utilizar un datareader con un subciclo, que es el que te leera las categorías...
Mira.. ésta sería mi idea.
Do while reader.read de mis categorías
....
.....
.....
Do while r2.read de los elementos de esa catergoría.
...
Loop
....
....
....
Loop
Y en tu grid puedes utilizar ItemTemplates para ir dibujando las tablas....y darle el formato que desees..
Saludos