Maison > Article > développement back-end > Utiliser un répéteur imbriqué dans un répéteur
Le répéteur est utilisé imbriqué dans le répéteur. Comme le montre l'image
Cet exemple est écrit en utilisant vs.net 2008 (C#). De admin10000.com
Code CS backend
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(); } }
Code aspx frontal
<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>
Exemple de code de téléchargement : PageDemo.RAR
Documents associés : Implémentation de pagination du contrôle Répéteur Le contrôle Répéteur implémente les opérations d'édition, de mise à jour et de suppression Méthode d'affichage des séparateurs dans plusieurs lignes du Répéteur
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!