Un datagrid per ogni riga di un datagrid

La necessità: per ogni riga di un datagrid visualizzare una datagrid con informazioni esplose.
La soluzione: girovagando un po' in giro ho trovato diverse soluzioni sul Master and Detail Datagrid, perfino qualcuno che si è creato a proprio uso e consumo un controllo personalizzato.
Io ovviamente non ho nè il tempo nè le capacità, quindi risolvo più artigianalmente in questo modo.

Lo scenari per varie motivi che non sto ad elencare, mi trovo costretto a dover visualizzare dei blocchi di record, a 3 a 3, relazionati tra loro attraverso apposita tabellina di sql.

Partiamo quindi dal codice del pageload:

strlSQL = "SELECT ID FROM tblRelationship WHERE Divisione = @Divisione AND NOT Stato ='3'"

Dim da As New SqlDataAdapter(strSQL, conn)
dsRelationship = New DataSet
da.Fill(dsRelationship, "miaTabella")

grdTEST.DataSource = dsRelationship
grdTest.
DataKeyField = ID
grdTEST.DataBind()

Ottengo così il datagrid popolato di ID.
Adesso passiamo ad implementare la funzioncina che per ogni riga mi interroga il db popolandomi un bel datagrid:

Protected Function getOrdersDataSource(ByVal _ID As String) As DataView
   Dim strSQL As String = "SELECT Fields FROM tblMiaTabella WHERE sr.ID = @ID AND sp.Divisione = @Divisione "

   Dim conn As SqlConnection
   conn = New SqlConnection(ConfigurationSettings.AppSettings("conn"))
   Dim ds As DataSet
   Dim daRel As New SqlDataAdapter(strSQL, conn)
   ds = New DataSet
   daRel.Fill(ds, "ds")
   Return ds.Tables(0).DefaultView
End Function

A questo punto personalizziamo il codice HTML.

<asp:DataGrid id="grdTEST"  AutoGenerateColumns="False" runat="server">
       <Columns>
        <asp:TemplateColumn HeaderText="ID">
         <ItemTemplate>
          <asp:Label Runat="server" Text='<%# Container.DataItem("ID") %>' ID="lblID"></asp:Label>
         </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn>
         <ItemTemplate>
          <asp:DataGrid runat="server" AutogenerateColumns="False" DataSource='<%# getOrdersDataSource(DataBinder.Eval(Container.DataItem, "ID")) %>' ID="grdRow">
            <Columns>
                 [... template column]
            </Columns>          
          </asp:DataGrid>          
         </ItemTemplate>
        </asp:TemplateColumn>     
       </Columns>
</asp:DataGrid>

«luglio»
domlunmarmergiovensab
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456