(转)asp.net(C#)手记之Repeater与两级菜单

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

这个菜单只实现了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等资料请参考其他的教程。

时间: 2024-08-04 13:27:46

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

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

于遇到了项目中实体类嵌套多层子级实体集合,并且子级实体集合的数据需要提交保存到数据库中的问题.针对此情况需要进行一些特殊的处理才可以将整个 实体类及子级实体集合数据提交表单到控制器中,解决的方法是根据MVC视图中表单的命名规则来设置正确的子级实体集合所属的表单控件name属性,从而来 获取提交的集合数据. 在说明如何将表单中实体的子级实体集合数据提交到控制器中的问题前,我们需要了解MVC的对于数组和列表集合的表单提交方式(点击此链接进行查看). 定义多层嵌套实体和假设场景 首先我们根据情况进行分

[Asp.net]Calendar+JqueryUi实现日程管理(右键菜单,添加,编辑,删除,源码)

引言 出差终于回来了,这篇文章算是这个月的博客的开篇吧. 上篇文章:[Asp.net]Calendar+JqueryUi实现日程管理——添加日程 上篇文章主要贴了一些该项目的界面,这里面,将主要代码也贴出来分享一下. 项目 数据库设计 1 USE [Wolfy.Schedule] 2 GO 3 4 /****** Object: Table [dbo].[TB_Schedule] Script Date: 2014/7/5 16:30:00 ******/ 5 SET ANSI_NULLS ON

DropDownList控件:两级联动--【Asp.Net】

最近学习Asp.Net,发现很多控件都很有意思,例如:Canlender,AdRotator等.以前只知道有这样的页面效果,但是对这些控件了解并不多.不怕不知道,就怕不知道. DropDownList,两级联动,做这个demo的时候,让我又爱又恨. 一开始的时候,自己就草草的建立了一个Fresh的数据库,建立了一个Student表如下图所示: 在页面上面放了两个DropDownList,两个SqlDataSource.如下图所示: 下面就需要通过SqlDataSource设置数据源,让DropD

ASP.NET:DropDownList与Repeater显示下拉框

之前把DropDownList放在Repeater里面,结果显示一堆下拉列表. 代码: (前台) <asp:DropDownList ID="brand" runat="server" OnLoad="brand_Load"> </asp:DropDownList> <asp:Repeater ID="rp1" runat="server" > <ItemTempl

【ASP.Net】什么!Repeater里面还有个Repeater?!

我就贴核心代码,这个项目因为我正在帮人家做,所以暂时不能公开太多源码 (如果真想要源码的话,等我10月底帮他把项目提升到三层时再公开现在这1.0版本的源码吧~) 先说下我的目的:根据Repeter1中的id,嵌套查询Repeter内部的值(没办法,我数据库就是用三层设计的,所以代码就...)  直接贴核心源码(其实代码多了反而干扰视线) 1.先给Repeater1注册Repeater1_ItemDataBound 事件 <asp:Repeater ID="Repeater1" r

ASP转PHP手记

打算将动易网站管理系统移植到PHP环境中,寻寻觅觅了很多PHP内容管理网站,发现网上有动易转PHPCMS的代码,所以就拿定注意用PHPCMS的在google上找到一转换程序,动手做来还成功了,现将此次转换的经验与教训总结如下:    1.在http://www.otand.com/html/php/cms/20080605/2852.html下载完美动易2006 Sp6  SiteWeaver CMS6.5 Access MSSQL转 PHPCMS 2007 SP6程序解压缩备用,请不要下载PH

asp.net中Button按钮点击两次才执行Onclick事件的原因

今天写了一个简单的聊天室,有登录页面和聊天室,当从登录页面跳入到聊天室过后,却发现要点击两次发送按钮才能发送到显示区,然后发送按钮正常运行. 通过不断测试,发现,第一次点击并没有执行点击事件,第二次才执行的点击事件.并且也找到了问题所在.下面用一个简单的小例子来说明: 页面Server_Transfer.aspx: <asp:Button ID="Button1" runat="server" Text="Button" OnClick=&

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

最近在做一个网站,用asp.net MVC4.0来开发,今天遇到了两个小问题,通过查找相关渠道解决了,在这里把这两个问题写出来,问题非常简单,不喜勿喷,mark之希望可以给遇到相同问题的初学者一点帮助. 问题一:我要实现文件的异步上传,前端提交的文件后台老是获取不到. 我前端是这样写的: @using (Ajax.BeginForm("UpdateNewInfo", "Home", new AjaxOptions() { HttpMethod = "pos

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

前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" MaintainScrollPositionOnPostback="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran