文档章节

动态从数据库读取菜单(ASP.NET版)

JavaSwing
 JavaSwing
发布于 2016/11/29 11:09
字数 418
阅读 28
收藏 0

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

我是个小菜,高手请不要喷!我在网上查了好久,说用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进行嵌套来进行实现的!

本文转载自:http://www.cnblogs.com/zxdBlog/p/3193435.html

JavaSwing
粉丝 21
博文 44
码字总数 8095
作品 0
杭州
程序员
私信 提问
在ASP.NET页面中实现数据棒图

作者:阿虎 来自:yesky 棒图有时又称为"Bar"图。在我的上一篇文章《在ASP.NET实现数据图表》中已经介绍了在浏览器看到的图表,一般都是图片文件。那么在ASP.NET中是否也可以生成这些图表?答...

晨曦之光
2012/03/09
195
0
asp.net调试错误解决方法收集

1.“/MMTest”应用程序中的服务器错误。 -------------------------------------------------------------------------------- 对于不返回任何键列信息的 SelectCommand 不支持 UpdateComman......

小兵哥
2011/04/20
3K
0
免费开放源代码ajax,asp,php,.net,jsp HonoCMS,代码自动生成,可视工作流

http://www.honoweb.com http://www.honoweb.com/java.php http://www.honoweb.com/asp.php http://www.honoweb.com/net.php HonoCMS 是ajax,asp,php,.net,jsp开发的内容管理系统 1.动态网页......

lingjun
2009/07/18
258
0
使用主题样式创建动态的 ASP.NET 服务器控件

下载demo - 48.9 KB 简介 这篇文章会向你展示如何添加、动态创建ASP.NET 服务器控件,并把控件添加到html div标签中。 创建你的ASP.NET web应用(工程),并引入你需要的主题(模板)。 按你...

oschina
2014/11/05
1K
2
ASP.NET Core入门(一)

  大家好,很荣幸您点了开此篇文章,和我一起来学习ASP.NET Core,此篇文字为《ASP.NET Core入门》系列中的第一篇,本系列将以一个博客系统为例,从第一行代码,到系统发布上线(linux)。...

lionxin
01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【0911】linux软件包安装和卸载

【0911】linux软件包安装和卸载 一、安装软件包的三种方法 1、rpm工具:与win中的exe安装包类似,红帽子公司包管理系统 2、yum工具:属于一种用python开发的工具,支持自动的安装依赖的包 3、...

飞翔的竹蜻蜓
30分钟前
3
0
【外行学IT】手机网页自适应之rem和viewport

在写手机网页时,对于像素的问题会非常困惑,初学者很多时候会因为那么一个小点的问题解决不了,或者无法理解透彻就放弃了学习。 我在学习写手机网页时也困惑了许久,出现过下面的问题: 图片...

前端老手
41分钟前
5
0
三、Java设计模式之单一职责原则

定义:不要存在多于一个导致类变更的原因。 一个类、接口、方法只负责一项职责 优点:降低类的复杂度、提高类的可读性,提高系统的可维护性、降低变更引起的风险

东风破2019
48分钟前
4
0
搭建高可用MongoDB集群(分片)

搭建高可用MongoDB集群(分片) KaliArch关注1人评论28269人阅读2017-12-04 21:57:41 MongoDB基础请参考:https://blog.51cto.com/kaliarch/2044423 MongoDB(replica set)请参考:https:/...

linjin200
今天
6
0
Pandas DataFrame创建方法大全

Pandas是Python的数据分析利器,DataFrame是Pandas进行数据分析的基本结构,可以把DataFrame视为一个二维数据表,每一行都表示一个数据记录。本文将介绍创建Pandas DataFrame的6种方法。 创建...

汇智网教程
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部