Use Repeater nested in Repeater

巴扎黑
Release: 2017-04-30 10:19:07
Original
1843 people have browsed it

Repeater is used nested in Repeater. As shown in the picture

This example is written using vs.net 2008 (C#). From admin10000.com

Backend CS code

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.dtCategory = GetCategoryTable();
                this.dtProduct = GetProductTable();
                rptCategoryList.DataSource = dtCategory;
                rptCategoryList.DataBind();
            }
        }

        // 准备一张分类表
        DataTable GetCategoryTable()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("CategoryId", typeof(int));
            dt.Columns.Add("CategoryTitle", typeof(string));
            for (int i = 1; i <= 3; i++)
            {
                DataRow row = dt.NewRow();
                row["CategoryId"] = i;
                row["CategoryTitle"] = "分类名字 " + i + "";
                dt.Rows.Add(row);
            }
            return dt;
        }
        
        // 准备一张产品表
        DataTable GetProductTable()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("ProductTitle", typeof(string));
            dt.Columns.Add("CategoryId", typeof(int));
            for (int i = 1; i <= 9; i++)
            {
                DataRow row = dt.NewRow();
                row["ProductTitle"] = "产品名字 " + i + "";
                if (i > 6) row["CategoryId"] = 3;
                else if (i > 3) row["CategoryId"] = 2;
                else row["CategoryId"] = 1;
                dt.Rows.Add(row);
            }
            return dt;
        }

        // 获取某个类别的产品
        DataTable GetProductTable(int categoryId)
        {
            DataView dv = this.dtProduct.DefaultView;
            dv.RowFilter = " CategoryId=" + categoryId + " ";
            return dv.ToTable();
        }

        protected void rptCategoryList_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                DataRowView drv = (DataRowView)e.Item.DataItem;
                Literal ltlTitle = (Literal)e.Item.FindControl("ltlTitle");
                ltlTitle.Text = drv["CategoryTitle"].ToString();
                Repeater rptProductList = (Repeater)e.Item.FindControl("rptProductList");
                rptProductList.DataSource = GetProductTable(Convert.ToInt32(drv["CategoryId"]));
                rptProductList.DataBind();
            }
        }

        protected void rptProductList_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                DataRowView drv = (DataRowView)e.Item.DataItem;
                Literal ltlTitle = (Literal)e.Item.FindControl("ltlTitle");
                ltlTitle.Text = drv["ProductTitle"].ToString();
            }
        }
Copy after login

Frontend aspx code

  <form id="form1" runat="server">
    <p>
        <asp:Repeater ID="rptCategoryList" runat="server" OnItemDataBound="rptCategoryList_ItemDataBound">
            <ItemTemplate>
                <p class="listBox">
                    <p class="title">
                        <asp:Literal ID="ltlTitle" runat="server"></asp:Literal></p>
                    <p class="content">
                        <ul>
                            <asp:Repeater ID="rptProductList" runat="server" OnItemDataBound="rptProductList_ItemDataBound">
                                <ItemTemplate>
                                    <li>
                                        <asp:Literal ID="ltlTitle" runat="server"></asp:Literal>
                                    </li>
                                </ItemTemplate>
                            </asp:Repeater>
                        </ul>
                    </p>
                </p>
            </ItemTemplate>
        </asp:Repeater>
    </p>
    </form>
Copy after login

Download code example: Use Repeater nested in RepeaterPageDemo.RAR

Related documents: Paging implementation of Repeater control Repeater control implements editing, updating, and deletion operations Method of displaying separators in multiple rows of Repeater

The above is the detailed content of Use Repeater nested in Repeater. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template