一个DataList中遍历的是一个栏目的分类,但是还想在栏目分类下嵌套遍历分类的内容怎么办呢?这就涉及到DataList的嵌套循环了。
首先,在视图代码中的两个DataList代码是这样的:<!--第一层循环DataList-->
<asp:DataList ID="DataList1" runat="server" Width="100%" DataKeyField="Id" OnItemDataBound="DataList1_ItemDataBound">
<ItemTemplate>
<!--父级分类-->
<li class="small_title"><a href="#"><%# Eval("TypeName") %></a></li>
<!--第二层循环DataList-->
<asp:DataList ID="dlShowWineType" runat="server">
<ItemTemplate>
<li><a href='<%#"Show_Index.aspx?id="+Eval("Id") %>'><%# Eval("WineTypeName")%></a></li>
</ItemTemplate>
</asp:DataList>
</ItemTemplate>
</asp:DataList>
DataList1.DataSource = TypeManager.GetSelectTypeList(); DataList1.DataBind();
然后在外层DataList的ItemDataBound事件中写入以下代码
/// <summary> /// 加载子分类 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { DataList dlDir2 = (DataList)e.Item.FindControl("dlShowWineType"); string typeId = DataList1.DataKeys[e.Item.ItemIndex].ToString().Trim(); List<WineType> list = WineTypeManager.GetSelectWineTypeByType(Convert.ToInt32(typeId)); dlDir2.DataSource = list; dlDir2.DataBind(); }
运行结果:
本文介绍如何在ASP.NET中使用DataList进行嵌套循环,以便在显示栏目分类的同时,也能展示其下的内容。通过外层DataList的ItemDataBound事件,实现对分类内容的遍历和呈现。
1428

被折叠的 条评论
为什么被折叠?



