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

本文涉及的产品
可视分析地图(DataV-Atlas),3 个项目,100M 存储空间
简介:

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

 

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

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






 本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/477635,如需转载请自行联系原作者

相关实践学习
DataV Board用户界面概览
本实验带领用户熟悉DataV Board这款可视化产品的用户界面
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
相关文章
|
1月前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
|
3天前
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
22 5
|
11天前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
57 13
|
1月前
|
Java 物联网 编译器
C#一分钟浅谈:.NET Core 与 .NET 5 区别
本文对比了 .NET Core 和 .NET 5,从历史背景、主要区别、常见问题及易错点等方面进行了详细分析。.NET Core 侧重跨平台支持和高性能,而 .NET 5 在此基础上统一了 .NET 生态系统,增加了更多新特性和优化。开发者可根据具体需求选择合适的版本。
47 7
|
1月前
|
人工智能 开发框架 前端开发
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
|
1月前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
20天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
20天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
29天前
|
人工智能 开发框架 安全
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
|
1月前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架