一、首先找到三张菜单背景图片。
(分别是菜单顶边、菜单中间背景和菜单底边)


ASP.NET + XML + DIV 构建动态导航菜单

二、设计XML文件

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

三、设计嵌套DataList.

ASPX文件如下:

ASP.NET + XML + DIV 构建动态导航菜单<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
ASP.NET + XML + DIV 构建动态导航菜单<html>
ASP.NET + XML + DIV 构建动态导航菜单 <head>
ASP.NET + XML + DIV 构建动态导航菜单 <title>NavMenuBar</title>
ASP.NET + XML + DIV 构建动态导航菜单 <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
ASP.NET + XML + DIV 构建动态导航菜单 <meta name="CODE_LANGUAGE" Content="C#">
ASP.NET + XML + DIV 构建动态导航菜单 <meta name="vs_defaultClientScript" content="JavaScript">
ASP.NET + XML + DIV 构建动态导航菜单 <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
ASP.NET + XML + DIV 构建动态导航菜单 <Link Rel="stylesheet" href="../../css/admin_css.css">
ASP.NET + XML + DIV 构建动态导航菜单 </head>
ASP.NET + XML + DIV 构建动态导航菜单 <body MS_POSITIONING="GridLayout" topmargin="0" leftmargin="0" bgcolor="#ffffff" rightmargin="0"
ASP.NET + XML + DIV 构建动态导航菜单        scroll="no" onload="ShowFirst()">
ASP.NET + XML + DIV 构建动态导航菜单 <form >

四、鼠标点击要隐藏其他菜单

javascript 代码如下:

ASP.NET + XML + DIV 构建动态导航菜单<script language='javascript'>
ASP.NET + XML + DIV 构建动态导航菜单function shift(id)
ASP.NET + XML + DIV 构建动态导航菜单ASP.NET + XML + DIV 构建动态导航菜单ASP.NET + XML + DIV 构建动态导航菜单{
ASP.NET + XML + DIV 构建动态导航菜单 var this_id = id;
ASP.NET + XML + DIV 构建动态导航菜单 var ID_Array = new Array("1","2", "3", "4", "5","6","7");
ASP.NET + XML + DIV 构建动态导航菜单 var objThis;
ASP.NET + XML + DIV 构建动态导航菜单 for (var i=0; i<ID_Array.length; i++)
ASP.NET + XML + DIV 构建动态导航菜单ASP.NET + XML + DIV 构建动态导航菜单ASP.NET + XML + DIV 构建动态导航菜单{
ASP.NET + XML + DIV 构建动态导航菜单        objThis = document.getElementById(ID_Array[i]);
ASP.NET + XML + DIV 构建动态导航菜单 if (this_id == ID_Array[i])
ASP.NET + XML + DIV 构建动态导航菜单ASP.NET + XML + DIV 构建动态导航菜单ASP.NET + XML + DIV 构建动态导航菜单{
ASP.NET + XML + DIV 构建动态导航菜单            objThis.style.display = 'inline';
ASP.NET + XML + DIV 构建动态导航菜单        }
ASP.NET + XML + DIV 构建动态导航菜单 else
ASP.NET + XML + DIV 构建动态导航菜单ASP.NET + XML + DIV 构建动态导航菜单ASP.NET + XML + DIV 构建动态导航菜单{
ASP.NET + XML + DIV 构建动态导航菜单            objThis.style.display = 'none';
ASP.NET + XML + DIV 构建动态导航菜单        }
ASP.NET + XML + DIV 构建动态导航菜单    }
ASP.NET + XML + DIV 构建动态导航菜单}
ASP.NET + XML + DIV 构建动态导航菜单function ShowFirst()
ASP.NET + XML + DIV 构建动态导航菜单ASP.NET + XML + DIV 构建动态导航菜单ASP.NET + XML + DIV 构建动态导航菜单{
ASP.NET + XML + DIV 构建动态导航菜单    document.getElementById("1").style.display= 'inline';
ASP.NET + XML + DIV 构建动态导航菜单}
ASP.NET + XML + DIV 构建动态导航菜单</script>

五、后面的C#代码如下:

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


ASP.NET + XML + DIV 构建动态导航菜单

相关文章: