zoukankan      html  css  js  c++  java
  • (转)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"><href="#">首页</a></li>       
    6.     </HeaderTemplate
    7.     <ItemTemplate
    8.         <li class="multiItem"
    9.             <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><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等资料请参考其他的教程。

  • 相关阅读:
    【转】linux之fsck命令
    【转】linux之mkfs/mke2fs格式化
    【转】linux_fdisk命令详解
    【转】linux之ln命令
    [转]linux的du和df命令
    [转]Linux之type命令
    [转]Linux下which、whereis、locate、find 命令的区别
    [转]Linux的chattr与lsattr命令详解
    get 与post 的接收传值方式
    在asp.net前台页面中引入命名空间 和连接数据库
  • 原文地址:https://www.cnblogs.com/wanshutao/p/4274063.html
Copyright © 2011-2022 走看看