Question

I Have a 2 tables in database w/c are connected

tblPackage
id Name
1  Package A
2  Package B

tblDetails
id PackageID Details
1  1         PackageDetails11
2  1         PackageDetails12
3  1         PackageDetails13
4  1         PackageDetails14
5  2         PackageDetails21
6  2         PackageDetails22
7  2         PackageDetails23

Now i want it to manipulate it on a repeater

HTML

<asp:Repeater ID="rptrPackage" runat="server">
<ItemTemplate>
    <asp:Label id="Pack" runat="server" Text='<%# Bind("Pack") %>'></asp:Label>
    <asp:BulletedList id="Details" runat="server">
    </asp:BulletedList>
    </ItemTemplate>
</asp:Repeater>

ASP

private void Populate()
{
    DataTable dtPackage = tblPackage();
    DataTable dtDetails = tblDetails();

    rptrPackage.DataSource = dtPackage;
    rptrPackage.DataBind();
}
Was it helpful?

Solution

Try this

aspx

    <asp:Repeater ID="rptrPackage" runat="server">
        <ItemTemplate>
            <asp:Label ID="Pack" runat="server" Text='<%# Bind("Pack") %>'></asp:Label>
            <asp:HiddenField ID="hID" Value='<%# Eval("PackageID") %>' runat="server" />
            <asp:Repeater runat="server" ID="rptDetails">
                <HeaderTemplate>
                    <ul>
                </HeaderTemplate>
                <ItemTemplate>
                    <li>
                        <%# Eval("Details")%>
                    </li>
                </ItemTemplate>
                <FooterTemplate>
                    </ul>
                </FooterTemplate>
            </asp:Repeater>
        </ItemTemplate>
    </asp:Repeater>

code behind

    private void Populate()
    {
        DataTable dtPackage = tblPackage();
        DataTable dtDetails = tblDetails();

        rptrPackage.DataSource = dtPackage;
        rptrPackage.DataBind();

        foreach (RepeaterItem item in rptrPackage.Items)
        {
            Repeater rptDetails = ((Repeater)item.FindControl("rptDetails"));
            rptDetails.DataSource = dtDetails.Select("PackageID = " + ((HiddenField)item.FindControl("hID")).Value).CopyToDataTable();
            rptDetails.DataBind();
        }
    }

OTHER TIPS

Using SqlDataSourse inside repeater ,

<asp:Repeater ID="rptrPackage" runat="server" >
<ItemTemplate>
<asp:HiddenField ID="PackID" runat="server"  Value='<%# Eval("id") %>' 
/>
<asp:Label id="Pack" runat="server" Text='<%# Eval("Name") %>'></asp:Label><br/>
<asp:BulletedList ID="Details" runat="server"   
        DataSourceID="SqlDataSource1" DataTextField="Details"   
        DataValueField="id">
        </asp:BulletedList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"    ConnectionString="<%$ ConnectionStrings:YourConnectionString %>" 
    SelectCommand="SELECT * FROM [tblDetail] WHERE [PackageID] = @PID"  >
    <SelectParameters>
        <asp:ControlParameter    Name="PID"   Type="Int32"  ControlID="PackID"   PropertyName="Value" />
     </SelectParameters>
 </asp:SqlDataSource>
 </ItemTemplate>
</asp:Repeater>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top