ASP.NET 2.0:DataList嵌套DataList解决方案

时间: 2008-07-17 / 分类: 学习心得 / 浏览次数: 4,029 / 0个评论 发表评论

前台代码比较多,主要是绑定的数据比较多吧,里面最重要的一点就是要设置外层DataList的DataKeyField;而且要为外层DataLisy增加OnItemDataBound方法,内层DataList的数据要在其中绑定,这是最重要的。其余代码就是数据绑定了,没什么大的问题。

<asp:Table ID=table1 runat=server Width=100%>

    <asp:TableRow>

        <asp:TableCell CssClass=title_color>

            <font class=title>公共课辅导班</font> 

        </asp:TableCell>

    </asp:TableRow>

    <asp:TableRow>

        <asp:TableCell>

            <asp:DataList ID=fdjgDL runat=server Width=100% RepeatDirection=horizontal RepeatColumns=1 DataKeyField=jigouid  OnItemDataBound=fdjgDL_OnItemDataBound>

                <ItemTemplate>

                <asp:Table ID=Table2 runat=server>

                    <asp:TableRow>

                        <asp:TableCell HorizontalAlign=center Width=140px>

                            <asp:HyperLink ID=HyperLink2 runat=server Target=_blank NavigateUrl='<%#~/WebSite/Departs/Depart.aspx?id=+Eval(jigouid) %>’>

                                <asp:ImageMap ID=logoIM ImageUrl='<%# Eval(logo)%>’  runat=server Width=120px Height=80px ></asp:ImageMap></asp:HyperLink>

                        </asp:TableCell>

                        <asp:TableCell RowSpan=2><div class=l></div>

//
下面是内层的DataList

                        <asp:DataList ID=fdbDL runat=server RepeatDirection=horizontal RepeatColumns=1>

                            <ItemTemplate>

                                <ul>

                                    <li>

                                        <asp:HyperLink ID=hl_student runat=server Target=_blank NavigateUrl='<%#~/WebSite/Classes/detail.aspx?type=2&id=+Eval(ggkfdbid) %>’><%#Eval(fdbming).ToString().Length > 28 ? Eval(fdbming).ToString().Substring(0, 28) : Eval(fdbming).ToString()%></asp:HyperLink>

                                    </li>

                                </ul>

                                <div align=right>

                                <asp:Label ID=timeLabel runat=server><%# Eval(shijian,{0:MM’月’dd’日’}) %></asp:Label></div>

                            </ItemTemplate>

                        </asp:DataList>

                        </asp:TableCell>

                    </asp:TableRow>

                    <asp:TableRow>

                        <asp:TableCell Width=140px HorizontalAlign=center>

                            <ul>

                                <li>

                                    <asp:HyperLink ID=HyperLink1 Font-Size=Medium runat=server Target=_blank NavigateUrl='<%#~/WebSite/Departs/Depart.aspx?id=+Eval(jigouid) %>’><%# Eval(jgming)%></asp:HyperLink>

                                </li>

                            </ul>

                        </asp:TableCell>

                    </asp:TableRow>

                </asp:Table><hr />

                </ItemTemplate>

            </asp:DataList>

        </asp:TableCell>

    </asp:TableRow>

</asp:Table>

 

后台代码绑定就比较简单了,只要每次取得外层DataList的DataKeys,取得内层DataList的数据就可以了,在OnItemDataBound进行操作。


    protected void pageBind()

    {

        DataTable dt=this.depart.ReturnPubAgency().Tables[0];

        DataView dv=dt.DefaultView;

        this.fdjgDL.DataSource = dv;

        this.fdjgDL.DataBind();

 

    }

 

    protected void fdjgDL_OnItemDataBound(object sender, DataListItemEventArgs e)

    {

        int index = e.Item.ItemIndex;

        if (e.Item.ItemType == ListItemType.Item)

        {

            DataList dl = (DataList)e.Item.FindControl(fdbDL);

            string id = this.fdjgDL.DataKeys[index].ToString();

            dl.DataSource = this.depart.ReturnPubClass(id, 4);

            dl.DataBind();

        }


}

效果如图,还是不好看:

历史上的今天

2016年:快乐星期天423期:段子(141)(13条评论)

2015年:不作死就不会死(93条评论)

2012年:文摘手打033:把握幼儿最早的交际欲望(15条评论)

2011年:快乐星期天162期:一周美女秀专辑(2)(97条评论)

2010年:PortableApps.com 平台 2.0 (Leo) Beta 5 测试发布[译文147](36条评论)

2009年:山东省2009年高考的几条新闻(3条评论)

2009年:在博客和网站上添加代码提醒升级 IE6 或者更换浏览器(6条评论)

2009年:Feedjit 网站博客边栏工具(6条评论)

发表评论

您的昵称 *

您的邮箱 *

您的网站