(转)asp.net(C#)手记之Repeater与两级菜单
先来张图片说明下我们要实现的菜单:

这个菜单只实现了2级哈。
我采用的方法是嵌套2个Repeater。
先看下数据库中的表结构:

数据:

上代码:
aspx:
- <asp:Repeater ID="rptMenus" runat="server"
- onitemdatabound="rptMenus_ItemDataBound">
- <HeaderTemplate>
- <ul class="mnuLevel01">
- <li id="mnuHome"><a href="#">首页</a></li>
- </HeaderTemplate>
- <ItemTemplate>
- <li class="multiItem">
- <a target="<%#DataBinder.Eval(Container.DataItem,"target") %>" href="<%#DataBinder.Eval(Container.DataItem,"Url") %>"><%#DataBinder.Eval(Container.DataItem,"Title") %></a>
- <asp:Repeater ID="rptSubMenus" runat="server">
- <HeaderTemplate>
- <ul class="mnuLevel02">
- </HeaderTemplate>
- <ItemTemplate>
- <li><a href="<%#DataBinder.Eval(Container.DataItem,"Url") %>"><%#DataBinder.Eval(Container.DataItem,"Title") %></a></li>
- </ItemTemplate>
- <FooterTemplate>
- </ul>
- </FooterTemplate>
- </asp:Repeater>
- </li>
- </ItemTemplate>
- <FooterTemplate>
- </ul>
- </FooterTemplate>
- </asp:Repeater>
cs代码:
- private DataSet dsMenus;//菜单
- protected void Page_Load(object sender, EventArgs e)
- {
- //绑定主菜单
- string connStr = "Data Source=ip地址;Initial Catalog=数据库名;User Id=sa;password=密码;";
- //SqlConnection conn = new SqlConnection(connStr);
- //conn.Open();
- string cmdText = "SELECT * FROM EP_menus WHERE status=1 ORDER BY orderid ASC,id ASC";
- //SqlCommand cmd = new SqlCommand(cmdText, conn);
- SqlDataAdapter adapter = new SqlDataAdapter(cmdText, connStr);
- dsMenus = new DataSet();
- adapter.Fill(dsMenus);
- DataView dvTopMenus = new DataView(dsMenus.Tables[0]);
- dvTopMenus.RowFilter = "[parent]=0";
- rptMenus.DataSource = dvTopMenus;
- rptMenus.DataBind();
- }
- protected void rptMenus_ItemDataBound(object sender, RepeaterItemEventArgs e)
- {
- if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
- {
- Repeater rptSMenus = (Repeater)e.Item.FindControl("rptSubMenus");
- DataRowView drv = (DataRowView)e.Item.DataItem;
- int pMenu = Convert.ToInt32(drv["id"]);//父级菜单id
- //if (pMenu != 0)
- //{
- DataView dvSubMenus = new DataView(dsMenus.Tables[0]);
- dvSubMenus.RowFilter = "[parent]=" + pMenu;
- if (dvSubMenus.Count > 0)
- {
- rptSMenus.DataSource = dvSubMenus;
- rptSMenus.DataBind();
- }
- //}
- }
- }
这里只是个大体的思路和代码,具体的Repeater等资料请参考其他的教程。
(转)asp.net(C#)手记之Repeater与两级菜单的更多相关文章
- ASP.NET(C#) Repeater分页的实现
ASP.NET(C#) Repeater分页的实现 第一种方式: 数据库连接代码: using System; using System.Data; using System.Configuratio ...
- 在asp.net中使用confirm可以分为两种:
在asp.net中使用confirm可以分为两种: 1.没有使用ajax,confirm会引起也面刷新 2.使用了ajax,不会刷新 A.没有使用ajax,可以用StringBuilder来完成. ( ...
- ASP.NET MVC 表单提交多层子级实体集合数据到控制器中
于遇到了项目中实体类嵌套多层子级实体集合,并且子级实体集合的数据需要提交保存到数据库中的问题.针对此情况需要进行一些特殊的处理才可以将整个 实体类及子级实体集合数据提交表单到控制器中,解决的方法是根据 ...
- asp.net控件(1)Repeater
1. 通过Repeater和数据源创建表格 <AlternatingItemTemplate>属性可以控制单元格交替显示不同的背景颜色 <table width=" sty ...
- 在Asp.Net MVC中使用Repeater控件
使用Repeater控件在视图中展示图表信息,Repeater控件的使用概述: <asp:Repeater ID="Repeater1" runat="server ...
- ASP转PHP手记
打算将动易网站管理系统移植到PHP环境中,寻寻觅觅了很多PHP内容管理网站,发现网上有动易转PHPCMS的代码,所以就拿定注意用PHPCMS的在google上找到一转换程序,动手做来还成功了,现将此次 ...
- 030. asp.net中DataList数据绑定跳转(两种方式)的完整示例
前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.as ...
- ASP.NET MVC 开发中遇到的两个小问题
最近在做一个网站,用asp.net MVC4.0来开发,今天遇到了两个小问题,通过查找相关渠道解决了,在这里把这两个问题写出来,问题非常简单,不喜勿喷,mark之希望可以给遇到相同问题的初学者一点帮助 ...
- 子级Repeater获取 父级Repeater
第一种方法,子级Repeater中绑定父级的某个字段: <%# DataBinder.Eval((Container.NamingContainer.NamingContainer as Rep ...
随机推荐
- 你好,C++(24)好大一个箱子!5.1.1 函数的声明和定义
第5章 用函数封装程序功能 在完成功能强大的工资程序V1.0之后,我们信心倍增,开始向C++世界的更深远处探索. 现在,我们可以用各种数据类型定义变量来表达问题中所涉及的各种数据:用操作符连接这些变量 ...
- delphi列表视图组件(TListView)使用方法|实例
TListView 组件以多种形式显示列表的项目,如详细资料.小图标.大图标等形式表示列表中的项目. 列表视图与用TListBox 组件实现的列表框非常相似.不同的是,列表视图可以让用户选择不同 ...
- 将Activity设置成半透明的对话框
将Activity设置成半透明的对话框 在定义Activity时指定Theme.Dialog主题就可以将Activity设置成对话框风格.通过修饰Theme.Dialog主题的android:wind ...
- Supervisor的一些基础使用
Supervisor是一个进程监控程序. 满足的需求是:我现在有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断.当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了 ...
- Android 访问权限设置
Android开发应用程序时,有时我们要用到很多权限, 今天我就收集了一些开发时可能用到的开启权限设置. 这些权限都是在 AndroidManifest.xml设置. 设置方法 <uses-pe ...
- php笔试题1
PHP 基础知识部分 1. 求$a的值 复制代码 代码如下: $a = "hello"; $b = &$a; unset($b); $b = "world&quo ...
- nhibernate 3.3 linq扩展
nhibernate的sqlserver linq 全文检索搞了半天 方法一 ,扩展LinqToHqlGeneriatorsRegistry http://www.cnblogs.com/xiarug ...
- 成功启动了Apache却没有启动apache服务器
原因没有用管理员身份运行...
- MongoDB insert/update/one2many案例
以博文与评论为例,博文有标题内容,对应多个评论,评论有评论人.评论内容等. ()插入一条博文: db.blog.insert( {','title':'this is blog title1','co ...
- Android使用百度地图定位
下面事例是使用Android平台的部分代码.对于这个平台百度的开放人员已经写了完整的demo,把工程导入到eclipse中之后一般没有错误,如果报错的话,eclipse也会给出提示.一般可以通过将pr ...