• (转)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等资料请参考其他的教程。

  • 相关阅读:
    关于MySQL中ALTER TABLE 的命令用法——SQL
    replace函数——SQL
    SQL构造一个触发器
    【视频转换】监控视频DAV转mp4
    【pyqt5+opencv】如何将大量图片合成一张图
    【OpenCV+pyqt5】视频抽帧裁剪与图片转视频
    【Caffe】生成数据之修改label
    【labelme】标注工具Trick
    【OpenCV+pyqt5】视频抽帧相关操作
    【pyqt5】Pyinstaller封装OpenCV异常
  • 原文地址:https://www.cnblogs.com/wanshutao/p/4274063.html
Copyright © 2020-2023  润新知