牛腩购物网20:用户自定义控件的使用,repeater嵌套循环显示大小类别,隐藏域传值

repeater控件的嵌套使用:

image

image

我们改写为。

 <asp:Repeater ID="repBig" runat="server" onitemdatabound="repBig_ItemDataBound">
                    <ItemTemplate>
                    
                    
                    <div class="ca">
                        <div class="ca_title">
                            <a href='/prolist.aspx?caid=<%#Eval("id") %>' style="color: #00CCFF"><%#Eval("caname") %>
                            </div>
                            <%--我们在大类循环的时候,添加一个隐藏域,用于给小类循环的时候传值--%>
                            <asp:HiddenField ID="hfCaid" runat="server" Value='<%#Eval("id") %>' />
                        

                        <asp:Repeater ID="repSmall" runat="server">
                            <ItemTemplate><a href='/prolist.aspx?caid=<%#Eval("id") %>'> <%#Eval("caname") %> </a></ItemTemplate>
                        </asp:Repeater>
    
                    </div>
                    </ItemTemplate>
                    </asp:Repeater>
 
然后我们给这个大的repeater加上一个  ItemDataBind事件,表示在大的rep循环的时候的事件,我们刚好可以用来对小的rep进行循环和绑定

image

protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //显示最新上架
                repNewSJ.DataSource = new DAL.ProductDAO().GetList("id,proname", "createdate", "desc", 10, 1, "");
                repNewSJ.DataBind();

                //先显示大的类别
                repBig.DataSource = new Niunan.Shop.DAL.CategoryDAO().GetListArray("pid=0");
                repBig.DataBind();

            }
        }

        //循环大类的时候,通过 HiddenField 这个隐藏域来传值到 repSmall 小类进行循环
        protected void repBig_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                //我们先通过repBig来找到 regSmall
                Repeater repSmall = e.Item.FindControl("repSmall") as Repeater;
                HiddenField hfCaid = e.Item.FindControl("hfCaid") as HiddenField;

                repSmall.DataSource = new Niunan.Shop.DAL.CategoryDAO().GetListArray("pid="+hfCaid.Value);
                repSmall.DataBind();

            }
        }
原文地址:https://www.cnblogs.com/iceicebaby/p/2419250.html