DataList嵌套循环分类

本文介绍如何在ASP.NET中使用DataList进行嵌套循环,以便在显示栏目分类的同时,也能展示其下的内容。通过外层DataList的ItemDataBound事件,实现对分类内容的遍历和呈现。

一个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>
外层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();
        }
运行结果:
image 
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值