Hola a todos. los comunicarles que ya lo resolví.
En asp.net el GridView soporta un sub-gridView, para el sub-Grid uso un metodo que filtra la tabla Ttipohabitacion por el nombre de Hotel.
Es algo asi:
<asp:GridView id="gvHotelesBusqueda" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<ItemTemplate>
Hotel: <%# DataBinder.Eval(Container,"DataItem.NombreHotel")% >
<br />
<asp:GridView ID="gvTipoHabitacion" runat="server" DataSource='<%# GetTipoHabitaciones(DataBinder.Eval(Container,"Dat aItem.NombreHotel").ToString())%>'>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
El Grid principal se carga por código. solo eso. GetTipoHabitaciones no hace llamadas al servidor sql, solo filtra una tabla traida junto con los hoteles en un dataset Global.
Me despido.