惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网

博客园 - 使名扬

vs.net 2005 C# WinForm GroupBOX 的BUG?尝试读取或写入受保护的内存。这通常指示其他内存已损坏 windows2003双网卡安装openmeetings成功后登录页空白 access top order by的逻辑问题 解决vs2005中文乱码问题 登录失败:用户帐户限制。可能的原因包括不允许空密码,登录时间限制,或强制的策略限制。 - 使名扬 - 博客园 gridview中如何添加对某行删除时的确认提示框 VS2008 母版页嵌套母版页,下级母版页不执行Page_Load解决方法 - 使名扬 - 博客园 360会导致MSDN "无法显示该网页" - 使名扬 - 博客园 asp.net下使用FCKeditor 2.6.6 in ,exists ,join sql server 2000中了解各表的记录数 oracle树形sql查询 谨慎使用windows 2003 64位版 带日期,时间和闰年验证的正则式 关于vs.net 2003向vs.net 2005迁移后,注册事件丢失,"并不包含...的定义" 的解决方法 - 使名扬 走进非洲,发现全错了-关于sqlserver2000下全球化网站生僻语种sql查询的解决方案 MSDN上关于sqlserver 万能分页原理实现的一个致命错误 BUGReport:datagrid带模板列绑定空数据集出错的问题 Asp.net 2.0 Webpart 数据库的迁移
DataList父子嵌套
使名扬 · 2010-09-25 · via 博客园 - 使名扬

比如为了实现以下嵌套效果

★ 人★
    男人  女人   老人
    小孩
★ 动物★
     狗  猫  
★ 水果★
    apple  香焦  西瓜
    菠萝   葡萄

代码

           <!--主菜单开始-->
           
<ASP:datalist id="Datalist1" runat="server" RepeatDirection="Horizontal" RepeatColumns="1"
            Width
="100%" OnItemDataBound="Datalist1_ItemDataBound">
            
<ItemTemplate>
             ★
<href='product_type_detail.aspx?id=<%# DataBinder.Eval(Container.DataItem,"typeid") %>'>
             
<%# DataBinder.Eval(Container.DataItem,"typename"%></a><br/>
             
<!--子菜单开始-->
              
<asp:datalist id="Datalist2" Width="100%" runat="server" RepeatColumns="3" RepeatDirection="Horizontal">
               
<ItemTemplate>
                
<href='product_type_detail.aspx?id=<%# DataBinder.Eval(Container.DataItem,"typeid") %>'>
                     
<%# DataBinder.Eval(Container.DataItem, "typename")%></a>                    
               
</ItemTemplate>
              
</asp:datalist>
             
<!--子菜单结束-->
            
</ItemTemplate>
           
</asp:datalist>
           
<!--主菜单结束-->

后台:

(1)为主DataList绑定主数据。

        void MyBind()
        {
            DBHelper helper = new DBHelper();
            string sql = "select typeid,pid,typename from product_type where typelevel=1 order by ordernum ";

            DataSet ds = new DataSet();
            ds = helper.ExecuteDataSet(sql);

            Datalist1.DataSource = ds;
            Datalist1.DataBind();
        }

(2)为子DataList绑定数据。

DataList嵌套的重点是要在外层DataList的ItemDataBound事件中完成对嵌套DataList的绑定。在主DataList的ItemDataBound事件中用e.Item.FindControl方法来找到嵌套层DataList的id,完后为该id绑定数据

        protected void Datalist1_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                DataList Datalist2 = (DataList)e.Item.FindControl("Datalist2");
                DataRowView rowv = (DataRowView)e.Item.DataItem;
                int pid = Convert.ToInt32(rowv["typeid"]);

                if (pid > 0)
                {
                    DBHelper helper = new DBHelper();
                    string sql = "select typeid,pid,typename from product_type where pid=" + pid;

                    DataSet ds = new DataSet();
                    ds = helper.ExecuteDataSet(sql);

                    if (ds != null)
                    {
                        try
                        {

                            Datalist2.DataSource = ds;
                            Datalist2.DataBind();
                        }
                        catch (Exception ex)
                        {
                            throw new Exception(ex.Message);
                        }
                    }
                }
            }
        }