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>

posted @ giovedì 28 luglio 2005 19:49

Print

Comments on this entry:

# re: Un datagrid per ogni riga di un datagrid

Left by Simone Chiaretta at 28/07/2005 23:21
Gravatar
mi sa che il tuo HTML spacca tutta la pagina :-)

# re: Un datagrid per ogni riga di un datagrid

Left by sohbet at 17/06/2007 21:59
Gravatar

# re: Un datagrid per ogni riga di un datagrid

Left by muhabbet yap at 14/07/2009 20:45
Gravatar
Comments have been closed on this topic.
«gennaio»
domlunmarmergiovensab
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456