先来张图片说明下我们要实现的菜单:

这个菜单只实现了2级哈。

我采用的方法是嵌套2个Repeater。

先看下数据库中的表结构:

数据:

上代码:

aspx:

  1. <asp:Repeater ID="rptMenus" runat="server"
  2. onitemdatabound="rptMenus_ItemDataBound">
  3. <HeaderTemplate>
  4. <ul class="mnuLevel01">
  5. <li id="mnuHome"><a href="#">首页</a></li>
  6. </HeaderTemplate>
  7. <ItemTemplate>
  8. <li class="multiItem">
  9. <a target="<%#DataBinder.Eval(Container.DataItem,"target") %>" href="<%#DataBinder.Eval(Container.DataItem,"Url") %>"><%#DataBinder.Eval(Container.DataItem,"Title") %></a>
  10. <asp:Repeater ID="rptSubMenus" runat="server">
  11. <HeaderTemplate>
  12. <ul class="mnuLevel02">
  13. </HeaderTemplate>
  14. <ItemTemplate>
  15. <li><a href="<%#DataBinder.Eval(Container.DataItem,"Url") %>"><%#DataBinder.Eval(Container.DataItem,"Title") %></a></li>
  16. </ItemTemplate>
  17. <FooterTemplate>
  18. </ul>
  19. </FooterTemplate>
  20. </asp:Repeater>
  21. </li>
  22. </ItemTemplate>
  23. <FooterTemplate>
  24. </ul>
  25. </FooterTemplate>
  26. </asp:Repeater>

cs代码:

  1. private DataSet dsMenus;//菜单
  2. protected void Page_Load(object sender, EventArgs e)
  3. {
  4. //绑定主菜单
  5. string connStr = "Data Source=ip地址;Initial Catalog=数据库名;User Id=sa;password=密码;";
  6. //SqlConnection conn = new SqlConnection(connStr);
  7. //conn.Open();
  8. string cmdText = "SELECT * FROM EP_menus WHERE status=1 ORDER BY orderid ASC,id ASC";
  9. //SqlCommand cmd = new SqlCommand(cmdText, conn);
  10. SqlDataAdapter adapter = new SqlDataAdapter(cmdText, connStr);
  11. dsMenus = new DataSet();
  12. adapter.Fill(dsMenus);
  13. DataView dvTopMenus = new DataView(dsMenus.Tables[0]);
  14. dvTopMenus.RowFilter = "[parent]=0";
  15. rptMenus.DataSource = dvTopMenus;
  16. rptMenus.DataBind();
  17. }
  18. protected void rptMenus_ItemDataBound(object sender, RepeaterItemEventArgs e)
  19. {
  20. if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
  21. {
  22. Repeater rptSMenus = (Repeater)e.Item.FindControl("rptSubMenus");
  23. DataRowView drv = (DataRowView)e.Item.DataItem;
  24. int pMenu = Convert.ToInt32(drv["id"]);//父级菜单id
  25. //if (pMenu != 0)
  26. //{
  27. DataView dvSubMenus = new DataView(dsMenus.Tables[0]);
  28. dvSubMenus.RowFilter = "[parent]=" + pMenu;
  29. if (dvSubMenus.Count > 0)
  30. {
  31. rptSMenus.DataSource = dvSubMenus;
  32. rptSMenus.DataBind();
  33. }
  34. //}
  35. }
  36. }

这里只是个大体的思路和代码,具体的Repeater等资料请参考其他的教程。

(转)asp.net(C#)手记之Repeater与两级菜单的更多相关文章

  1. ASP.NET(C#) Repeater分页的实现

    ASP.NET(C#) Repeater分页的实现 第一种方式: 数据库连接代码: using System; using System.Data; using System.Configuratio ...

  2. 在asp.net中使用confirm可以分为两种:

    在asp.net中使用confirm可以分为两种: 1.没有使用ajax,confirm会引起也面刷新 2.使用了ajax,不会刷新 A.没有使用ajax,可以用StringBuilder来完成. ( ...

  3. ASP.NET MVC 表单提交多层子级实体集合数据到控制器中

    于遇到了项目中实体类嵌套多层子级实体集合,并且子级实体集合的数据需要提交保存到数据库中的问题.针对此情况需要进行一些特殊的处理才可以将整个 实体类及子级实体集合数据提交表单到控制器中,解决的方法是根据 ...

  4. asp.net控件(1)Repeater

    1. 通过Repeater和数据源创建表格 <AlternatingItemTemplate>属性可以控制单元格交替显示不同的背景颜色 <table width=" sty ...

  5. 在Asp.Net MVC中使用Repeater控件

    使用Repeater控件在视图中展示图表信息,Repeater控件的使用概述: <asp:Repeater ID="Repeater1" runat="server ...

  6. ASP转PHP手记

    打算将动易网站管理系统移植到PHP环境中,寻寻觅觅了很多PHP内容管理网站,发现网上有动易转PHPCMS的代码,所以就拿定注意用PHPCMS的在google上找到一转换程序,动手做来还成功了,现将此次 ...

  7. 030. asp.net中DataList数据绑定跳转(两种方式)的完整示例

    前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.as ...

  8. ASP.NET MVC 开发中遇到的两个小问题

    最近在做一个网站,用asp.net MVC4.0来开发,今天遇到了两个小问题,通过查找相关渠道解决了,在这里把这两个问题写出来,问题非常简单,不喜勿喷,mark之希望可以给遇到相同问题的初学者一点帮助 ...

  9. 子级Repeater获取 父级Repeater

    第一种方法,子级Repeater中绑定父级的某个字段: <%# DataBinder.Eval((Container.NamingContainer.NamingContainer as Rep ...

随机推荐

  1. 武汉科技大学ACM:1006: 华科版C语言程序设计教程(第二版)例题4.17

    Problem Description 输入一个整数,求它的素数因子.并按照格式输出. Input 一个整数n.(2<=n<=100) Output n=a*b*c*... (a,b,c为 ...

  2. java事件处理3

    鼠标拖动事件 接口MouseMotionListener 两个方法 mouseDragged(MouseEvent)//拖动鼠标 mouseMoved(MouseEvent)//移动鼠标 一个拖动按钮 ...

  3. ecshop模板如何修改详细图解

    ecshop模板如何修改?很多人在问这个问题,今天就以图解的方式给大家详细说下.相信学完之后,你会很清楚如何修改ecshop模板,不管你是初学者还是程序高手. 1, ecshop的模板结构 ecsho ...

  4. phpcms v9为联动菜单字段添加验证提醒功能 解决标题不能为空

    v9系统中,如果你在模型中添加了联动菜单字段就算你在字段设置中设置了最小值为1,提交内容之前你不选择联动菜单中的值,也不会出现类似类似“标题不能为空”这样的提示下面提供解决办法打开phpcms\lib ...

  5. 我自己的style

    /** DATE:Time AUTHOR:Zoe TEAM:公司名称 INTRO:cssName **/ @charset "utf-8"; /*通用公共样式 开始*/ /* 清除 ...

  6. XML解析方式与解析工具

    DOM解析原理: 1)JAXP (oracle-Sun公司官方) 2)JDOM工具(非官方) 3)Dom4J工具(非官方) 三大框架(默认读取xml的工具就是Dom4j) ....... SAX解析原 ...

  7. 使用Reaver加PIN码秒破WPA-PSK密码

    之前掌握到的破解WPA-PSK密码仅限于使用aircreack工具包获取handshake后挂字典爆破方式,而能否破解出wpa密码完全依赖于字典强度了.除了该方式外还有一个更有效的办法,就是使用路由P ...

  8. git操作的各种命令整理

    1.常用的Git命令   命令 简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 git ann ...

  9. SparkStreaming 源码分析

    SparkStreaming 分析 (基于1.5版本源码) SparkStreaming 介绍 SparkStreaming是一个流式批处理框架,它的核心执行引擎是Spark,适合处理实时数据与历史数 ...

  10. PHP 访问类中的静态属性

    静态属性和普通属性不一样,静态属性只属于类本身而不属于类的任何实例,所以他们的访问方式也不一样.你可以把静态属性认为是存储在类当中的全局变量,而且你可以在任何地方通过类来访问它们. 在类本身中访问静态 ...