Repeater 控件的嵌套使用

 

  Repeater 控件的嵌套使用  

 

  ItemDataBound:数据绑定的时候(正在进行时)发生,多用在Repeater控件嵌套,对子Repeater控件进行数据绑定及模板列中统计列的计算处理等事情

  ItemCommand :用来响应Item模板中的控件的事件。

 

 绑定数据时,在父Repeater的ItemDataBound事件中绑定子Repeater,在子Repeater的ItemDataBound事件中绑定孙Repeater:

 

            <dl id="body-zhanshi">

                <%--一级 Repeater 绑定 省 --%>
                <asp:Repeater ID="Repeater1" runat="server">

                    <ItemTemplate>

                        <dt class="body-dt">

                            <a href="#?AC=<%#Eval("AreaCode") %>"> 
                                <%#Eval("AreaName")%> 

                            </a>

                        </dt>

                        <dd class="body-dd">

                              <%--二级 Repeater 绑定 市 --%>
                            <asp:Repeater ID="Repeater2" runat="server">

                                <ItemTemplate>

                                    <a href="#?AC=<%#Eval("AreaCode") %>"> <%#Eval("AreaName")%></a>

                                </ItemTemplate>

                            </asp:Repeater>
                        </dd>

                    </ItemTemplate>
                </asp:Repeater>

            </dl>

        </div>
.aspx

 

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Thc_chengshi_Thc_chsh : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        Repeater1.ItemDataBound += Repeater1_ItemDataBound;  //委托

        //全部城市

        Repeater1.DataSource = states("0001");
        Repeater1.DataBind();

    }




    //母级城市对应的子集城市
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {

            Repeater rep = e.Item.FindControl("Repeater2") as Repeater;  //找到里层的repeater对象

            ChinaStates rowv = (ChinaStates)e.Item.DataItem;//找到分类Repeater关联的数据项 

            string cod = rowv.AreaCode;  //读取Repeater1中绑定数据的字段

            rep.DataSource = states(cod); //调用方法查询数据、绑定Repeater1
            rep.DataBind();

        }

    }





    //查询城市的方法
    public List<ChinaStates> states(string code)
    {
        List<ChinaStates> clist = new List<ChinaStates>();
        using (Data0216_ltDataClassesDataContext con = new Data0216_ltDataClassesDataContext())
        {

            clist = con.ChinaStates.Where(r => r.ParentAreaCode == code).ToList();

        }

        return clist;
    }

}
View Code

 

 

 

  if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

           -- 指触发对象的类型是DadaList里的基本行或是替换行(简单的说是Repeater里的所有数据项内容)     

  Repeater rep = e.Item.FindControl("Repeater2") as Repeater;    

             -- 找到里层的repeater对象

  ChinaStates rowv = (ChinaStates)e.Item.DataItem;

              --  找到 Repeater 关联的数据项 

              --  ChinaStates   是绑定数据的数据库表       





 

转载于:https://www.cnblogs.com/Tanghongchang/p/7039605.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值