Datagrid inside a Repeater ;)

lamy

Regular
Joined
Dec 12, 2005
Messages
56
Location
under your bed
a colleague asked me if you could insert a datagrid inside a datarepeater, i wasnt sure at that time so i tried searching but was unable to get any info on it, so i tried messin with the repeater events diggin inside watch values

heres what i came up with

on the page i have the repeater with a datagrid within itemtemplate
Code:
    <asp:Repeater ID="Repeater1" runat="server">
        <HeaderTemplate>
            <table>
        </HeaderTemplate>

        <ItemTemplate>
        <tr>
            <td>
            TABLE 1<br />
                <%#DataBinder.Eval(Container.DataItem, "ID")%>           
                <%#DataBinder.Eval(Container.DataItem, "NAME")%>
            </td>
            <td>
            TABLE 2
                <asp:DataGrid ID="datagrid1" runat="server">                
                </asp:DataGrid>
            </td>            
        </tr>
        <tr>
            <td colspan="2">
            <hr />
            </td>
        </tr>
        </ItemTemplate>

        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:Repeater>

in my code behind (took off the sqlclass, just the usual anyway)
Visual Basic:
Protected Sub form1_Load(ByVal sender As Object, _
     ByVal e As System.EventArgs) Handles form1.Load

        Dim dt1 As New DataTable("TABLE1")
        Dim query As String = ""

        query = "SELECT TOP 10 * ID, [NAME] FROM TABLE1"
        dt1 = sqlClass.execQuery(query, dt1.TableName)  ' returns datatable

        Repeater1.DataSource = dt1
        Repeater1.DataBind()
End Sub

Protected Sub Repeater1_ItemCreated(ByVal sender As Object, _
     ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) _
     Handles Repeater1.ItemCreated

        Dim dt2 As New DataTable("TABLE2")
        Dim query As String = ""

        Try
            ' itemtemplate (can also be checked with ItemType)
            Dim drv As DataRowView
            drv = e.Item.DataItem

            query = "SELECT Something FROM TABLE2 where ID = '" & drv.Row.Item("ID") & "'"
            dt2 = sqlClass.execQuery(query, dt2.TableName)

            Dim datagrid1 As DataGrid = DirectCast(e.Item.FindControl("datagrid1"), DataGrid)

            datagrid1.DataSource = dt2
            datagrid1.DataBind()
        Catch
            ' headertemplate or footertemplate (do nothing)
        End Try
End Sub

is there another way, just curious?
 
Back
Top