Cita: Pero, a su vez, para que esto me sea válido la propiedad 'autogenerateColumns' tiene que ser = true.
En esos casos no se puede hacer directamente lo que quieres, una forma sería saber primero cuantas columnas estás regresando (puedes contar las columnas del dataset) y construir una tabla de forma dinámica..
Cita: <table align="center" border="1" cellspacing="0" style="border-collapse:collapse;position:relative;left:-9;">
<tr>
<td width="400" align="center">
<b>Columna1</b>
</td></tr>
<tr>
<td width="400" align="center">
<b>Columna2</b>
</td></tr>
<tr>
<td width="400" align="center">
<b>Columna3</b>
</td></tr>
....
</table>
<div style="height:100px; overflow:auto; vertical-align: top;">
<asp:DataGrid runat="server" AutoGenerateColumns="True" .... ShowHeader="False" HorizontalAlign="Center" >
....
....
</asp:DataGrid>
</div>
De esa forma le quitas los header al grid y se los pasas a tu tabla que escribirías antes del control datagrid, para que le asignes despues tu div con scroll...
Es una forma que se me ocurre cuando estás generando las columnas de forma dinámica.
Espero que te sirva..