Repeater wird in Repeater verschachtelt verwendet. Wie im Bild gezeigt
Dieses Beispiel wurde mit vs.net 2008 (C#) geschrieben. Von 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(); } }
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>
Codebeispiel herunterladen: PageDemo.RAR
Zugehörige Dokumente: Paging-Implementierung der Repeater-Steuerung Die Repeater-Steuerung implementiert Bearbeitungs-, Aktualisierungs- und Löschvorgänge. Methode zum Anzeigen von Trennzeichen in mehreren Zeilen von Repeater
Das obige ist der detaillierte Inhalt vonVerwenden Sie den in Repeater verschachtelten Repeater. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!