一、首先找到三张菜单背景图片。
(分别是菜单顶边、菜单中间背景和菜单底边)
 二、设计XML文件
 
 <?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8" ?> <NavMenu>
<NavMenu>
 <Menus Text="个人助理" ID="1">
<Menus Text="个人助理" ID="1"> <MenuItem Text="我的首页" ImageUrl="../../Images/Menu/MyHomePage16.gif" NavigateUrl="../../Modules/Office/MyHomePage.aspx" />
 <MenuItem Text="我的首页" ImageUrl="../../Images/Menu/MyHomePage16.gif" NavigateUrl="../../Modules/Office/MyHomePage.aspx" /> <MenuItem Text="备 忘 录" ImageUrl="../../Images/Menu/MyMemo16.gif" NavigateUrl="../../Modules/Office/MyMemoList.aspx?id=0&Day=0" />
 <MenuItem Text="备 忘 录" ImageUrl="../../Images/Menu/MyMemo16.gif" NavigateUrl="../../Modules/Office/MyMemoList.aspx?id=0&Day=0" /> <MenuItem Text="我的计划" ImageUrl="../../Images/Menu/MyTask16.gif" NavigateUrl="../../Modules/Office/MyToDo.aspx" />
 <MenuItem Text="我的计划" ImageUrl="../../Images/Menu/MyTask16.gif" NavigateUrl="../../Modules/Office/MyToDo.aspx" /> <MenuItem Text="工作日志" ImageUrl="../../Images/Menu/MyLog16.gif" NavigateUrl="../../Modules/Office/MyBlogList.aspx" />
 <MenuItem Text="工作日志" ImageUrl="../../Images/Menu/MyLog16.gif" NavigateUrl="../../Modules/Office/MyBlogList.aspx" /> </Menus>
</Menus>
 <Menus Text="业务管理" ID="2">
<Menus Text="业务管理" ID="2"> <MenuItem Text="案件登记" ImageUrl="../../Images/Menu/LawCaseAdd16.gif" NavigateUrl="../../Modules/CaseManagement/AddLawCase.aspx" />
 <MenuItem Text="案件登记" ImageUrl="../../Images/Menu/LawCaseAdd16.gif" NavigateUrl="../../Modules/CaseManagement/AddLawCase.aspx" /> <MenuItem Text="案件管理" ImageUrl="../../Images/Menu/Lawcaselist16.gif" NavigateUrl="../../Modules/CaseManagement/LawCaseList.aspx?Lawyer=No&Type=No&Phase=No" />
 <MenuItem Text="案件管理" ImageUrl="../../Images/Menu/Lawcaselist16.gif" NavigateUrl="../../Modules/CaseManagement/LawCaseList.aspx?Lawyer=No&Type=No&Phase=No" /> <MenuItem Text="案件查询" ImageUrl="../../Images/Menu/find.gif" NavigateUrl="../../Modules/CaseManagement/LawCaseQuery.aspx?Page=Lawyer" />
 <MenuItem Text="案件查询" ImageUrl="../../Images/Menu/find.gif" NavigateUrl="../../Modules/CaseManagement/LawCaseQuery.aspx?Page=Lawyer" /> <MenuItem Text="案件统计" ImageUrl="../../Images/Menu/LawcaseReport16.gif" NavigateUrl="../../Modules/CaseManagement/LawCaseStat.aspx?Condition=Type" />
 <MenuItem Text="案件统计" ImageUrl="../../Images/Menu/LawcaseReport16.gif" NavigateUrl="../../Modules/CaseManagement/LawCaseStat.aspx?Condition=Type" /> <MenuItem Text="冲突查询" ImageUrl="../../Images/Menu/mywatches16.gif" NavigateUrl="../../Modules/CaseManagement/ConflictQuery.aspx" />
 <MenuItem Text="冲突查询" ImageUrl="../../Images/Menu/mywatches16.gif" NavigateUrl="../../Modules/CaseManagement/ConflictQuery.aspx" /> </Menus>
</Menus>
 <Menus Text="财务管理" ID="3">
<Menus Text="财务管理" ID="3"> <MenuItem Text="收支明细" ImageUrl="../../Images/Menu/details16.gif" NavigateUrl="../../Modules/Finance/IncomeList.aspx?IncomeType=All" />
 <MenuItem Text="收支明细" ImageUrl="../../Images/Menu/details16.gif" NavigateUrl="../../Modules/Finance/IncomeList.aspx?IncomeType=All" /> <MenuItem Text="收支查询" ImageUrl="../../Images/Menu/find.gif" NavigateUrl="../../Modules/Finance/QueryIncome.aspx" />
 <MenuItem Text="收支查询" ImageUrl="../../Images/Menu/find.gif" NavigateUrl="../../Modules/Finance/QueryIncome.aspx" /> <MenuItem Text="收支统计" ImageUrl="../../Images/Menu/LawcaseReport16.gif" NavigateUrl="../../Modules/Finance/IncomeStat.aspx?Condition=LegalFee" />
 <MenuItem Text="收支统计" ImageUrl="../../Images/Menu/LawcaseReport16.gif" NavigateUrl="../../Modules/Finance/IncomeStat.aspx?Condition=LegalFee" /> </Menus>
</Menus>
 <Menus Text="客户管理" ID="4">
<Menus Text="客户管理" ID="4"> <MenuItem Text="客户登记" ImageUrl="../../Images/Menu/CustomerAdd16.gif" NavigateUrl="../../Modules/CustomerManagement/ShowCustomer.aspx?ReturnURL=List&Type=New&ID=0" />
 <MenuItem Text="客户登记" ImageUrl="../../Images/Menu/CustomerAdd16.gif" NavigateUrl="../../Modules/CustomerManagement/ShowCustomer.aspx?ReturnURL=List&Type=New&ID=0" /> <MenuItem Text="客户列表" ImageUrl="../../Images/Menu/CustomerList16.gif" NavigateUrl="../../Modules/CustomerManagement/CustomerList.aspx" />
 <MenuItem Text="客户列表" ImageUrl="../../Images/Menu/CustomerList16.gif" NavigateUrl="../../Modules/CustomerManagement/CustomerList.aspx" /> <MenuItem Text="客户查询" ImageUrl="../../Images/Menu/mywatches16.gif" NavigateUrl="../../Modules/CustomerManagement/QueryCustomer.aspx" />
 <MenuItem Text="客户查询" ImageUrl="../../Images/Menu/mywatches16.gif" NavigateUrl="../../Modules/CustomerManagement/QueryCustomer.aspx" /> </Menus>
</Menus>
 <Menus Text="法律法规" ID="5">
<Menus Text="法律法规" ID="5"> <MenuItem Text="法规列表" ImageUrl="../../Images/Menu/Details16.gif" NavigateUrl="../../Modules/LawDoc/LawDocList.aspx" />
 <MenuItem Text="法规列表" ImageUrl="../../Images/Menu/Details16.gif" NavigateUrl="../../Modules/LawDoc/LawDocList.aspx" /> <MenuItem Text="下载最新" ImageUrl="../../Images/Menu/find.gif" NavigateUrl="../../Modules/LawDoc/LawDocUpdate.aspx" />
 <MenuItem Text="下载最新" ImageUrl="../../Images/Menu/find.gif" NavigateUrl="../../Modules/LawDoc/LawDocUpdate.aspx" /> </Menus>
</Menus>
 <Menus Text="系统管理" ID="6">
<Menus Text="系统管理" ID="6"> <MenuItem Text="人员列表" ImageUrl="../../Images/Menu/UserList16.gif" NavigateUrl="../../Modules/SysManagement/LawyerList.aspx" />
 <MenuItem Text="人员列表" ImageUrl="../../Images/Menu/UserList16.gif" NavigateUrl="../../Modules/SysManagement/LawyerList.aspx" /> <MenuItem Text="合同模板" ImageUrl="../../Images/Menu/Template16.gif" NavigateUrl="../../Modules/SysManagement/ContractTemplateList.aspx" />
 <MenuItem Text="合同模板" ImageUrl="../../Images/Menu/Template16.gif" NavigateUrl="../../Modules/SysManagement/ContractTemplateList.aspx" /> <MenuItem Text="参数设置" ImageUrl="../../Images/Menu/SysConfig16.gif" NavigateUrl="../../Modules/SysManagement/SysConfig.aspx?XMLFile=CaseType" />
 <MenuItem Text="参数设置" ImageUrl="../../Images/Menu/SysConfig16.gif" NavigateUrl="../../Modules/SysManagement/SysConfig.aspx?XMLFile=CaseType" /> </Menus>
</Menus>

 </NavMenu>
</NavMenu> 
 
三、设计嵌套DataList.
ASPX文件如下:
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <html>
<html> <head>
 <head> <title>NavMenuBar</title>
 <title>NavMenuBar</title> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
 <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" Content="C#">
 <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript">
 <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
 <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> <Link Rel="stylesheet" href="../../css/admin_css.css">
 <Link Rel="stylesheet" href="../../css/admin_css.css"> </head>
 </head> <body MS_POSITIONING="GridLayout" topmargin="0" leftmargin="0" bgcolor="#ffffff" rightmargin="0"
 <body MS_POSITIONING="GridLayout" topmargin="0" leftmargin="0" bgcolor="#ffffff" rightmargin="0" scroll="no" onload="ShowFirst()">
        scroll="no" onload="ShowFirst()"> <form id="Form1" method="post" runat="server">
 <form id="Form1" method="post" runat="server"> <base target='main'>
 <base target='main'> <asp:datalist id="NavMenu_List" Width="100%" RepeatDirection="Vertical" DataKeyField="ID" Runat="server"
 <asp:datalist id="NavMenu_List" Width="100%" RepeatDirection="Vertical" DataKeyField="ID" Runat="server" OnItemDataBound="MenuItem_ItemDataBound">
                OnItemDataBound="MenuItem_ItemDataBound"> <ItemTemplate>
 <ItemTemplate>
 <div class='category cursor' id='Menu<%# ((DataRowView)Container.DataItem)["ID"]%>' onclick=shift('<%
 <div class='category cursor' id='Menu<%# ((DataRowView)Container.DataItem)["ID"]%>' onclick=shift('<% # ((DataRowView)Container.DataItem)["ID"]%>')>
# ((DataRowView)Container.DataItem)["ID"]%>')> <img src="../../Images/menu/yellowdot.gif">  <a href='#' target="_self">
 <img src="../../Images/menu/yellowdot.gif">  <a href='#' target="_self">
 <%
 <% # ((DataRowView)Container.DataItem)["Text"]%>
# ((DataRowView)Container.DataItem)["Text"]%> </a>
 </a> </div>
 </div> <div class='grid' id='<%# ((DataRowView)Container.DataItem)["ID"]%>' style="DISPLAY:none">
 <div class='grid' id='<%# ((DataRowView)Container.DataItem)["ID"]%>' style="DISPLAY:none"> <ul>
 <ul> <asp:datalist id="MenuItem_List" Runat="server" RepeatDirection="Vertical" Width="100%">
 <asp:datalist id="MenuItem_List" Runat="server" RepeatDirection="Vertical" Width="100%"> <ItemTemplate>
 <ItemTemplate> <div class='Item'>
 <div class='Item'> <img src='<%# ((DataRowView)Container.DataItem)["ImageUrl"]%>'>   <a href='<%# ((DataRowView)Container.DataItem)["NavigateUrl"]%>'>
 <img src='<%# ((DataRowView)Container.DataItem)["ImageUrl"]%>'>   <a href='<%# ((DataRowView)Container.DataItem)["NavigateUrl"]%>'>
 <%
 <% # ((DataRowView)Container.DataItem)["Text"]%>
# ((DataRowView)Container.DataItem)["Text"]%> </a>
 </a> <br>
 <br> </div>
 </div> </ItemTemplate>
 </ItemTemplate> </asp:datalist>
 </asp:datalist> </ul>
 </ul> </div>
 </div> <div class="emptygrid"></div>
 <div class="emptygrid"></div> </ItemTemplate>
 </ItemTemplate> </asp:datalist>
 </asp:datalist> </form>
 </form> </body>
 </body> </html>
</html> 
 
四、鼠标点击要隐藏其他菜单
javascript 代码如下:
 <script language='javascript'>
<script language='javascript'> function shift(id)
function shift(id)

 {
{ var this_id = id;
 var this_id = id; var ID_Array = new Array("1","2", "3", "4", "5","6","7");
 var ID_Array = new Array("1","2", "3", "4", "5","6","7"); var objThis;
 var objThis; for (var i=0; i<ID_Array.length; i++)
 for (var i=0; i<ID_Array.length; i++)
 
  {
{ objThis = document.getElementById(ID_Array[i]);
        objThis = document.getElementById(ID_Array[i]); if (this_id == ID_Array[i])
 if (this_id == ID_Array[i])
 
  {
{ objThis.style.display = 'inline';
            objThis.style.display = 'inline'; }
        } else
 else
 
  {
{ objThis.style.display = 'none';
            objThis.style.display = 'none'; }
        } }
    } }
} function ShowFirst()
function ShowFirst()

 {
{ document.getElementById("1").style.display= 'inline';
    document.getElementById("1").style.display= 'inline'; }
} </script>
</script> 
五、后面的C#代码如下:
 public class NavMenuBar : System.Web.UI.Page
public class NavMenuBar : System.Web.UI.Page
 
  {
{ protected System.Web.UI.WebControls.DataList NavMenu_List;
        protected System.Web.UI.WebControls.DataList NavMenu_List; protected DataTable dt_TopMenu;
        protected DataTable dt_TopMenu; protected DataTable dt_MenuItem;
        protected DataTable dt_MenuItem; protected DataSet ds_NavMenu;
        protected DataSet ds_NavMenu; protected string sCurrentMenuID;
        protected string sCurrentMenuID;

 private void Page_Load(object sender, System.EventArgs e)
        private void Page_Load(object sender, System.EventArgs e)
 
  {
{ // 在此处放置用户代码以初始化页面
 // 在此处放置用户代码以初始化页面 if(!IsPostBack)
 if(!IsPostBack)
 
  {
{ sCurrentMenuID="1";
                sCurrentMenuID="1"; ReadXMLMenu();
                ReadXMLMenu(); BindDate_TopMenu();
                BindDate_TopMenu(); }
            } }
        }
 public void ReadXMLMenu()
        public void ReadXMLMenu()
 
  {
{ //读菜单XML文件,分别放入到两张表中。
 //读菜单XML文件,分别放入到两张表中。 string sID="0";  //临时记录菜单ID
            string sID="0";  //临时记录菜单ID ds_NavMenu = new DataSet();
            ds_NavMenu = new DataSet(); dt_TopMenu = new DataTable();
            dt_TopMenu = new DataTable(); dt_MenuItem = new DataTable();
            dt_MenuItem = new DataTable();
 DataRow dr_TopMenu;
            DataRow dr_TopMenu; dt_TopMenu.Columns.Add(new DataColumn("ID",typeof(System.String)));
            dt_TopMenu.Columns.Add(new DataColumn("ID",typeof(System.String))); dt_TopMenu.Columns.Add(new DataColumn("Text", typeof(System.String)));
            dt_TopMenu.Columns.Add(new DataColumn("Text", typeof(System.String)));
 DataRow dr_MenuItem;
            DataRow dr_MenuItem; dt_MenuItem.Columns.Add(new DataColumn("ParentID",typeof(System.String)));
            dt_MenuItem.Columns.Add(new DataColumn("ParentID",typeof(System.String))); dt_MenuItem.Columns.Add(new DataColumn("Text", typeof(System.String)));
            dt_MenuItem.Columns.Add(new DataColumn("Text", typeof(System.String))); dt_MenuItem.Columns.Add(new DataColumn("ImageUrl", typeof(System.String)));
            dt_MenuItem.Columns.Add(new DataColumn("ImageUrl", typeof(System.String))); dt_MenuItem.Columns.Add(new DataColumn("NavigateUrl", typeof(System.String)));
            dt_MenuItem.Columns.Add(new DataColumn("NavigateUrl", typeof(System.String)));
 string xmlfile;
            string xmlfile; xmlfile = Server.MapPath("../../") + "XMLData/NavMenu_Network.xml";    //这里以后可以任意更换,通过web.config
            xmlfile = Server.MapPath("../../") + "XMLData/NavMenu_Network.xml";    //这里以后可以任意更换,通过web.config XmlTextReader reader = new XmlTextReader(xmlfile);
            XmlTextReader reader = new XmlTextReader(xmlfile); while (reader.Read())
 while (reader.Read())
 
  {
{ if(reader.NodeType == XmlNodeType.Element)
 if(reader.NodeType == XmlNodeType.Element)
 
  {
{ if (reader.Name=="Menus")
 if (reader.Name=="Menus")
 
  {
{ //读顶层菜单
 //读顶层菜单 dr_TopMenu = dt_TopMenu.NewRow();
                        dr_TopMenu = dt_TopMenu.NewRow(); sID = reader["ID"].ToString();
                        sID = reader["ID"].ToString(); dr_TopMenu[0] = reader["ID"].ToString();
                        dr_TopMenu[0] = reader["ID"].ToString(); dr_TopMenu[1] = reader["Text"].ToString();
                        dr_TopMenu[1] = reader["Text"].ToString(); dt_TopMenu.Rows.Add(dr_TopMenu);
                        dt_TopMenu.Rows.Add(dr_TopMenu); }
                    } //然后读这个菜单下面的子菜单
 //然后读这个菜单下面的子菜单 else if (reader.Name=="MenuItem")
 else if (reader.Name=="MenuItem")
 
  {
{ dr_MenuItem = dt_MenuItem.NewRow();
                        dr_MenuItem = dt_MenuItem.NewRow(); dr_MenuItem[0] = sID;
                        dr_MenuItem[0] = sID; dr_MenuItem[1] = reader["Text"].ToString();
                        dr_MenuItem[1] = reader["Text"].ToString(); dr_MenuItem[2] = reader["ImageUrl"].ToString();
                        dr_MenuItem[2] = reader["ImageUrl"].ToString(); dr_MenuItem[3] = reader["NavigateUrl"].ToString();
                        dr_MenuItem[3] = reader["NavigateUrl"].ToString(); dt_MenuItem.Rows.Add(dr_MenuItem);
                        dt_MenuItem.Rows.Add(dr_MenuItem); }
                    } }
                } }
            } reader.Close();
            reader.Close();
 ds_NavMenu.Tables.Add(dt_TopMenu);
            ds_NavMenu.Tables.Add(dt_TopMenu); ds_NavMenu.Tables.Add(dt_MenuItem);
            ds_NavMenu.Tables.Add(dt_MenuItem); DataColumn parentCol;
            DataColumn parentCol; DataColumn childCol;
            DataColumn childCol; parentCol = dt_TopMenu.Columns["ID"];
            parentCol = dt_TopMenu.Columns["ID"]; childCol = dt_MenuItem.Columns["ParentID"];
            childCol = dt_MenuItem.Columns["ParentID"]; DataRelation rel;
            DataRelation rel; rel = new DataRelation("MenuRelation", parentCol, childCol);
            rel = new DataRelation("MenuRelation", parentCol, childCol); // Add the relation to the DataSet.
 // Add the relation to the DataSet. ds_NavMenu.Relations.Add(rel);
            ds_NavMenu.Relations.Add(rel);
 }
        }
 public void BindDate_TopMenu()
        public void BindDate_TopMenu()
 
  {
{ NavMenu_List.DataSource = dt_TopMenu;
            NavMenu_List.DataSource = dt_TopMenu; NavMenu_List.DataBind();
            NavMenu_List.DataBind(); }
        }
 public void MenuItem_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
        public void MenuItem_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
 
  {
{ //Only consume the items in the parent datalist
 //Only consume the items in the parent datalist  //pertinent to nesting
 //pertinent to nesting if (e.Item.ItemType == ListItemType.Item ||
 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                e.Item.ItemType == ListItemType.AlternatingItem)
 
  {
{ //Now that the nested repeater is in scope, find it,
 //Now that the nested repeater is in scope, find it,  //cast it, and create a child view from
 //cast it, and create a child view from //the datarelation name, and specify that view as the
 //the datarelation name, and specify that view as the  //datasource.  Then bind the nested repeater!
 //datasource.  Then bind the nested repeater! string sMenuID = NavMenu_List.DataKeys[e.Item.ItemIndex].ToString();
                string sMenuID = NavMenu_List.DataKeys[e.Item.ItemIndex].ToString(); DataList MenuItem_List =     (DataList)e.Item.FindControl("MenuItem_List");
                DataList MenuItem_List =     (DataList)e.Item.FindControl("MenuItem_List"); if (MenuItem_List != null)
 if (MenuItem_List != null)
 
  {
{ MenuItem_List.DataSource =
                    MenuItem_List.DataSource = ((DataRowView)e.Item.DataItem).CreateChildView("MenuRelation");
                        ((DataRowView)e.Item.DataItem).CreateChildView("MenuRelation"); MenuItem_List.DataBind();
                    MenuItem_List.DataBind(); }
                }
 }
            } }
        }
 #region Web 窗体设计器生成的代码
        #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e)
        override protected void OnInit(EventArgs e)
 
  {
{ //
 // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
 // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 //
 // InitializeComponent();
            InitializeComponent(); base.OnInit(e);
            base.OnInit(e); }
        }
 /// <summary>
 /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改
 /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。
 /// 此方法的内容。 /// </summary>
 /// </summary> private void InitializeComponent()
        private void InitializeComponent()
 
  {
{     this.Load += new System.EventHandler(this.Page_Load);
 this.Load += new System.EventHandler(this.Page_Load); }
        } #endregion
        #endregion }
    } 

 
                    
                     
                    
                 
                    
                 
         
  
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号