今天在实现一个增强web项目可扩展性的一个功能,把以前的静态菜单改成了动态的扩展、可维护的菜单

页面代码

 


  1. <asp:Repeater ID="Repeater1" runat="server"   
  2.             onitemdatabound="Repeater1_ItemDataBound"> 
  3.         <ItemTemplate> 
  4.          <h1 class="type"><a href="javascript:void(0)"><%# DataBinder.Eval(Container.DataItem, "MT_name")%></a></h1> 
  5.             <asp:Repeater ID="Repeater2" runat="server"> 
  6.             <HeaderTemplate>   
  7.             <div class="content"> 
  8.             <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
  9.             <tr> 
  10.               <td><img src="p_w_picpaths/menu_topline.gif" width="182" height="5" /></td> 
  11.             </tr> 
  12.           </table> 
  13.         <ul class="MM"> 
  14.             </HeaderTemplate> 
  15.             <ItemTemplate> 
  16.              <li><a href="<%# DataBinder.Eval(Container.DataItem, "MI_page")%>" target="main"><%# DataBinder.Eval(Container.DataItem, "MI_name")%></a></li> 
  17.             </ItemTemplate>   
  18.             <FooterTemplate> 
  19.             </ul></div> 
  20.             </FooterTemplate> 
  21.             </asp:Repeater> 
  22.         </ItemTemplate> 
  23.         </asp:Repeater> 

 

 

后台代码:

 


  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3.     if (!IsPostBack)  
  4.     {  
  5.         string sql = "select MT_ID,MT_name from ModuleTopInfo";  
  6.         DataTable dt = new DataTable();  
  7.         SqlDbHelper db = new SqlDbHelper();//SqlHelper类你懂得  
  8.         Repeater1.DataSource =db.ExecuteDataTable(sql);  
  9.         Repeater1.DataBind();  
  10.     }  
  11. }  
  12.  
  13. protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)  
  14. {  
  15.     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)  
  16.     {  
  17.         string id = ((DataRowView)e.Item.DataItem).Row["MT_ID"].ToString();  
  18.         Repeater rpt = (Repeater)e.Item.FindControl("Repeater2");  
  19.         string sql = "select MI_ID,MI_page,MI_name from ModuleInfo where [email protected]";  
  20.         SqlParameter[] parameters = new SqlParameter[] {  
  21.             new SqlParameter("@id",id)  
  22.         };  
  23.         SqlDbHelper db = new SqlDbHelper();  
  24.         DataTable dt = new DataTable();  
  25.         dt = db.ExecuteDataTable(sql,CommandType.Text,parameters);  
  26.         if (rpt != null)  
  27.         {  
  28.             rpt.DataSource = dt;  
  29.             rpt.DataBind();  
  30.         }  
  31.     }  

 

两个Repeater嵌套实现动态菜单