Repeater的嵌套

来源:互联网 发布:录制视频软件 知乎 编辑:程序博客网 时间:2024/06/06 05:37

废话不多说,先上效果图。

为了达到这样的显示效果, 同时为了后台修改后,前台也直接修改的效果。用了repeater嵌套。


前台代码:

   <asp:Repeater ID="Rep_StreetName" runat="server" >                            <ItemTemplate>                                <asp:Label ID="LID"  Text='<%# Eval("StreetNo")%>' runat="server" Visible="false"></asp:Label>                                                                <div  class="<%# Eval("StreetCss")%>">                                    <div class="DefAreaT"><%# Eval("StreetName")%></div>                                    <div class="DefAreaC">                                        <ul>                                                                                        <asp:Repeater ID="Rep_SNS" runat="server">                                              <ItemTemplate>                                                  <li><a href="homeList.aspx?homeID=<%# Eval("SNSNo")%>"><%# Eval("SNSName")%></a></li>                                              </ItemTemplate>                                           </asp:Repeater>                                                                                    </ul>                                    </div>                                </div>                            </ItemTemplate>                        </asp:Repeater>

后台页代码:

 /// <summary>    /// 绑定办事处    /// </summary>    private void Bind_Street()    {        string strSql = "select SortNo, StreetNo,StreetName from T_SNSStreetOffice order by SortNo";        DataTable myDt = myDbAccess.GetTable(strSql);        DataTable DT = new DataTable();        DT.Columns.Add("StreetCss");        DT.Columns.Add("StreetName");        DT.Columns.Add("StreetNo");        for (int i = 0; i < myDt.Rows.Count; i++)        {            DataRow dr = DT.NewRow();            if (i % 2 == 0)            {                dr[0] = "DefArea BgColorA";            }            else            {                dr[0] = "DefArea BgColorB";            }            dr[1] = myDt.Rows[i]["StreetName"].ToString();            dr[2] = myDt.Rows[i]["StreetNo"].ToString();            DT.Rows.Add(dr);        }        Rep_StreetName.DataSource = DT;        Rep_StreetName.DataBind();        foreach (RepeaterItem item in Rep_StreetName.Items)        {            Label lblid = item.FindControl("LID") as Label;            Repeater rp = item.FindControl("Rep_SNS") as Repeater;            string strSql1 = "select ID,SNSNo,SNSName from T_SNSInfo where StreetNO='"+lblid.Text+"'";            DataTable myDt1 = myDbAccess.GetTable(strSql1);            DataTable DT1 = new DataTable();            DT1.Columns.Add("SNSName");            DT1.Columns.Add("SNSNo");            for (int i = 0; i < myDt1.Rows.Count; i++)            {                DataRow dr = DT1.NewRow();                dr[0] = myDt1.Rows[i]["SNSName"].ToString();                dr[1] = myDt1.Rows[i]["SNSNo"].ToString();                DT1.Rows.Add(dr);            }            rp.DataSource = DT1;            rp.DataBind();         }    }

没有添加注释,这里解说一下。

首先外层Repeater里加入了一个不显示的label  <asp:Label ID="LID"  Text='<%# Eval("StreetNo")%>' runat="server" Visible="false"></asp:Label> 
是为了后台方便获取读出来的每个外层项的值。

先要把外层Repeater的数据绑定出来,内层的才可以绑定数据,外层绑定数据根据自己习惯写就行。


下面说一下内层绑定:

 foreach (RepeaterItem item in Rep_StreetName.Items)//根据外层的项获取内层应该绑定的数据
        {
            Label lblid = item.FindControl("LID") as Label;//获取每个外层项的查询参数值
            Repeater rp = item.FindControl("Rep_SNS") as Repeater;//获取内层Repeater
            string strSql1 = "select ID,SNSNo,SNSName from T_SNSInfo where StreetNO='"+lblid.Text+"'";//查询语句
            DataTable myDt1 = myDbAccess.GetTable(strSql1);//获取数据

            DataTable DT1 = new DataTable();
            DT1.Columns.Add("SNSName");
            DT1.Columns.Add("SNSNo");
            for (int i = 0; i < myDt1.Rows.Count; i++)//循环读取获取到的数据
            {
                DataRow dr = DT1.NewRow();

                dr[0] = myDt1.Rows[i]["SNSName"].ToString();
                dr[1] = myDt1.Rows[i]["SNSNo"].ToString();


                DT1.Rows.Add(dr);
            }
            rp.DataSource = DT1;//绑定到内层Repeater
            rp.DataBind();
        }

原创粉丝点击