多个Repeater嵌套

近工作用到Repeater,就做一下小结,增加哈印象,也希望对需要的你们有所帮助


  1. repeater通常是同时读取多条数据,进行绑定,很直观

  2. 前台显示:

    ​<asp:Repeater ID="reporders" runat="server" OnItemDataBound="reporders_ItemDataBound">

                <ItemTemplate>

                    <div class="dingdan">

                        <div class="d-top">

                            <asp:Image ID="imgshp" runat="server" ImageUrl="img/hua.png" Width="19" Height="19" />

                            <asp:Label ID="shpname" runat="server" Text="店铺名"></asp:Label>

                            <img src="img/youjiantou.png" />

                            <p><%# Convert.ToInt32(Eval("orderstatus")) == 1 ? "待支付":""%></p>

                        </div>

                        <asp:Repeater ID="repitem" runat="server">

                            <ItemTemplate>

                                <div class="d-center">

                                    <img src="<%# Eval("ImageUrl1")%>" οnerrοr='this.src="img/dingdan.png"' width="60" height="41" />

                                    <%# Eval("ProductName")%>

                                </div>

                            </ItemTemplate>

                        </asp:Repeater>

                        <div class="d-bottom">

                            <p>合计:¥<%# Eval("ordertotal") %></p>

                            <p>共计1件商品</p>

                            <br />

                            <div class="hengfenge" style="background-color: #fff;"></div>

                           <asp:LinkButton ID="linkpay" runat="server" Visible="false" OnClick="linkpay_Click" CommandArgument='<%# Eval("orderid") %>'>支付</asp:LinkButton>

                            <asp:LinkButton ID="linkquit" runat="server" Visible="false" OnClick="linkquit_Click" CommandArgument='<%# Eval("orderid") %>'>取消</asp:LinkButton>

                        </div>

                    </div>

                    <div class="hengfenge" style="height: 5px;"></div>

                </ItemTemplate>

                <FooterTemplate><%# reporders.Items.Count==0 ? "暂无相符合数据":"" %></FooterTemplate>

            </asp:Repeater>

3. 后台

    protected void reporders_ItemDataBound(object sender, RepeaterItemEventArgs e)

        {

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

            {

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

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

                string typeid = rowv["id"].ToString(); //获取填充子类的id  

                DataSet dspro = borderitem.GetList("orderid='" + typeid + "'");  //通过查找的id在进行内Repeater的绑定

                rep.DataSource = dspro ;

                rep.DataBind();

            }

}


注:

    ​    ​通过<%# Eval("字段") %> 来读取你所绑定的字段名称

    ​    ​在外层repeater中添加 OnItemDataBound="reporders_ItemDataBound" 就会通过这一事件进行内层repeater的绑定

    ​    ​在没有数据的情况下可以在<FooterTemplate>中显示没有相符数据的情况,也可添加相应的样式


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值