• 动态导入新菜单


    这几天一直打算做个从数据读取导航菜单的效果,以前做的时候都是写死的(太死了),好了话不多说,先看效果!

    我是个小菜,高手请不要喷!我在网上查了好久,说用menu控件,但是我用了不太好!最后我决定用repeater的嵌套来实现这个效果。先数据库结构吧!

    前台的代码:

     1 <body>
     2     <form id="form1" runat="server">
     3     <div class="menu">
     4         <ul class="nav">
     5             <asp:Repeater ID="rptNav" runat="server" OnItemDataBound="rptNav_ItemDataBound">
     6                 <ItemTemplate>
     7                     <li><a href='<%# DataBinder.Eval(Container.DataItem,"navUrl")%>'>
     8                         <%# DataBinder.Eval(Container.DataItem,"navTitle") %></a>
     9                         <asp:Repeater ID="rptSub" runat="server">
    10                             <HeaderTemplate>
    11                                 <ul class="sub-nav">
    12                             </HeaderTemplate>
    13                             <ItemTemplate>
    14                                 <li><a href='<%# DataBinder.Eval(Container.DataItem,"navUrl")%>'>
    15                                     <%# DataBinder.Eval(Container.DataItem,"navTitle") %></a></li>
    16                             </ItemTemplate>
    17                             <FooterTemplate>
    18                                 </ul>
    19                             </FooterTemplate>
    20                         </asp:Repeater>
    21                     </li>
    22                 </ItemTemplate>
    23             </asp:Repeater>
    24         </ul>
    25     </div>
    26     </form>
    27 </body>
    28 </html>

    后台的实现:

    using System;
    using System.Collections.Generic;
    
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    using System.Data;
    
    namespace LearnTest
    {
        public partial class Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    InitData();
                }
            }
    
    
            /// <summary>
            /// 初始化数据
            /// </summary>
            private void InitData()
            {
                SqlConnection cn = new SqlConnection(@"server=(local);uid=sa;pwd=xjai18749695757;database=Test");
                SqlDataAdapter da = new SqlDataAdapter("select * from nav where parentId = 0",cn);
                DataSet ds = new DataSet();
                cn.Open();          //打开数据库连接
                da.Fill(ds);
                rptNav.DataSource = ds.Tables[0].DefaultView;
                rptNav.DataBind();
                cn.Close();
            }
    
            //绑定一级菜单时绑定二级菜单
            protected void rptNav_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {
                //判断repeater的数据绑定列
                if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    //当前一级菜单的ID
                    string id = ((DataRowView)(e.Item.DataItem)).Row["Id"].ToString();
                    //找到下面的repeater控件 
                    Repeater rpt = (Repeater)e.Item.FindControl("rptSub");
                    if (rpt!=null)
                    {
                        SqlConnection cn = new SqlConnection(@"server=(local);uid=sa;pwd=123456;database=Test");
                        SqlCommand cmd = new SqlCommand("select * from nav where parentId =@parentId",cn);
                        cmd.Parameters.Add("@parentId",SqlDbType.VarChar,11).Value = id;
                        cn.Open();
                        rpt.DataSource = cmd.ExecuteReader();
                        rpt.DataBind();
                        cn.Close();
                        
                    }
    
                }
            }
        }
    }

    这就是用repeater进行嵌套来进行实现的!

  • 相关阅读:
    37.Spring-事务控制.md
    35.Spring-jdbc支持.md
    29.Hibernate-二级缓存和session管理.md
    28.Hibernate-HQL查询.md
    27.Hibernate-缓存和懒加载.md
    26.Hibernate-主键和映射.md
    25.Hibernate-配置文件.md
    24.Hibernate-各种类型的查询.md
    MarkDown学习记录
    gitbook使用
  • 原文地址:https://www.cnblogs.com/qiu18359243869/p/12749635.html
Copyright © 2020-2023  润新知