Friday, January 1, 2010

Repeater inside repeater for master details data

The On Demand Global Workforce - oDesk


HTML code of repeater

   asp:Repeater ID="rptAFC" runat="server" OnItemDataBound="rptAFC_ItemDataBound" >
                ItemTemplate>
                    table width="100%">
                        tr>
                            td align="center" >
                                span style='font-size: 12pt; font-family: Verdana;' >strong>
                                    asp:Label ID="lblAFCTEam" runat="server" Text=%# Eval("ShortTeamName")%>>/asp:Label>                                  
                                  
                                /strong>/span>
                            /td>
                        /tr>
                        tr>
                            td>
                                ul>
                                    asp:Repeater ID="rptAFCLink" runat="server" >
                                        ItemTemplate>
                                            div>                                              
                                                table>
                                                        tr>
                                                            td width="150px">
                                                               asp:Label ID="Label1" runat="server" Text=%# Eval("Pname")%>>/asp:Label>

                                                            /td>
                                                            td>
                                                             span style="font-size: 10pt; color: DarkSlateBlue; font-family: Verdana">
                                                                %# Eval("PDate","{0:MM/dd/yyyy}")%>
                                                            /span>
                                                            /td>                                                      
                                                        /tr>                                               
                                                /table>                                             
                                            /div>
                                        /ItemTemplate>
                                    /asp:Repeater>
                                /ul>
                            /td>
                        /tr>
                     
                    /table>
                /ItemTemplate>
            /asp:Repeater>





Fill data to Master Repeater

 void GetTEam2()
        {
            OleDbConnection dbconn = new OleDbConnection(System.Configuration.ConfigurationManager.ConnectionStrings["AccessVisit"].ToString());
            dbconn.Open();
            //  string sql = "select ShortTeamName,Category,City,TeamID,Logo,TeamColor,TeamFont,ForumID,Tickets from theredzone.NFLTeam where Category like 'AFC%' and (ShortTeamName IN(select Team from theredzone.NFLHeadlines)) ORDER BY Category, City, TeamID ";
            string sql = "SELECT distinct [ShortTeamName] from NFLTeam where Category like 'NFC%'";
            OleDbDataAdapter adt = new OleDbDataAdapter(sql, System.Configuration.ConfigurationManager.ConnectionStrings["AccessVisit"].ToString());
            DataSet ds = new DataSet();
            adt.Fill(ds);
            rptNFC.DataSource = ds;
            rptNFC.DataBind();
        }


Fill details repeater through main repeater itemdatabound event

protected void rptAFC_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item ||
              e.Item.ItemType == ListItemType.AlternatingItem)
            {
                DataSet dsTEmp = new DataSet();
                Label lblAFCTEam = (Label)e.Item.FindControl("lblAFCTEam");
                dsTEmp = oDs1;
                dsTEmp.Tables["AFC"].DefaultView.RowFilter = "ShortTeamName = '" + lblAFCTEam.Text  + "'";
                Repeater ChildRep = e.Item.FindControl("rptAFCLink") as Repeater;
                ChildRep.DataSource = dsTEmp.Tables["AFC"].DefaultView;
                ChildRep.DataBind();
            }
        }

 In page load event put

 BinGrid1();