利用js做的下拉菜单
#nav {
list-style-type: none;
font-size:14px;
}
#nav a {
display: block;
text-align:center;
}
#nav a:link {
text-decoration:none;
}
#nav a:visited {
text-decoration:none;
}
#nav a:hover {
text-decoration:none;
}
#nav li {
float: left;
}
#nav li a:hover{
}
#nav li ul
{
top:149px;
list-style-type:none;text-align:left;
left: -999em; width: 180px; position: absolute;
}
#nav li ul li{
float: left;
width: 180px;
background: #5AA428;
}
#nav li ul a{
display: block;
width: 150px;
text-align:left;
padding-left:10px;
}
#nav li ul a:link {
text-decoration:none;
}
#nav li ul a:visited {
text-decoration:none;
}
#nav li ul a:hover {
text-decoration:none;font-weight:normal;
background:#F6F6F6;
}
#nav li:hover ul {
left: auto;
}
#nav li.sfhover ul {
left: auto;
}
#content {
clear: left;
}
</style>
<script type="text/javascript"><!-- //--><![CDATA[//><!--
function menuFix() {
var sfEls = document.getElementById("nav").getElementsByTagName("li");
for (var i = 0; i < sfEls.length; i++) {
sfEls[i].onmouseover = function () {
this.className += (this.className.length > 0 ? " " : "") + "sfhover";
}
sfEls[i].onMouseDown = function () {
this.className += (this.className.length > 0 ? " " : "") + "sfhover";
}
sfEls[i].onMouseUp = function () {
this.className += (this.className.length > 0 ? " " : "") + "sfhover";
}
sfEls[i].onmouseout = function () {
this.className = this.className.replace(new RegExp("( ?|^)sfhover\\b"),
"");
}
}
}
window.onload = menuFix;
//--><!]]></script>
list-style-type: none;
font-size:14px;
}
#nav a {
display: block;
text-align:center;
}
#nav a:link {
text-decoration:none;
}
#nav a:visited {
text-decoration:none;
}
#nav a:hover {
text-decoration:none;
}
#nav li {
float: left;
}
#nav li a:hover{
}
#nav li ul
{
top:149px;
list-style-type:none;text-align:left;
left: -999em; width: 180px; position: absolute;
}
#nav li ul li{
float: left;
width: 180px;
background: #5AA428;
}
#nav li ul a{
display: block;
width: 150px;
text-align:left;
padding-left:10px;
}
#nav li ul a:link {
text-decoration:none;
}
#nav li ul a:visited {
text-decoration:none;
}
#nav li ul a:hover {
text-decoration:none;font-weight:normal;
background:#F6F6F6;
}
#nav li:hover ul {
left: auto;
}
#nav li.sfhover ul {
left: auto;
}
#content {
clear: left;
}
</style>
<script type="text/javascript"><!-- //--><![CDATA[//><!--
function menuFix() {
var sfEls = document.getElementById("nav").getElementsByTagName("li");
for (var i = 0; i < sfEls.length; i++) {
sfEls[i].onmouseover = function () {
this.className += (this.className.length > 0 ? " " : "") + "sfhover";
}
sfEls[i].onMouseDown = function () {
this.className += (this.className.length > 0 ? " " : "") + "sfhover";
}
sfEls[i].onMouseUp = function () {
this.className += (this.className.length > 0 ? " " : "") + "sfhover";
}
sfEls[i].onmouseout = function () {
this.className = this.className.replace(new RegExp("( ?|^)sfhover\\b"),
"");
}
}
}
window.onload = menuFix;
//--><!]]></script>
静态menu 前台code:
<ul id="nav">
<li ><a href="/Default.aspx"><span>Home</span></a></li>
<li ><a href="/Account/Default.aspx"><span>My Account</span></a>
<ul>
<li><a href="/Account/Default.aspx">Default</a></li>
<li><a href="/Account/ChangePassword.aspx">ChangePassword</a></li>
</ul></li>
<li><a href="/PMail/Default.aspx">Private Mail</a>
<ul>
<li><a href="/PMail/SendMail.aspx">Send Mail</a></li>
<li><a href="/PMail/Inbox.aspx">InBox</a></li>
<li><a href="/PMail/SendBox.aspx">Sendbox</a></li>
</ul>
</li>
<li ><a href="/Default.aspx"><span>Home</span></a></li>
<li ><a href="/Account/Default.aspx"><span>My Account</span></a>
<ul>
<li><a href="/Account/Default.aspx">Default</a></li>
<li><a href="/Account/ChangePassword.aspx">ChangePassword</a></li>
</ul></li>
<li><a href="/PMail/Default.aspx">Private Mail</a>
<ul>
<li><a href="/PMail/SendMail.aspx">Send Mail</a></li>
<li><a href="/PMail/Inbox.aspx">InBox</a></li>
<li><a href="/PMail/SendBox.aspx">Sendbox</a></li>
</ul>
</li>
</ul>
动态menu 前台code
<asp:Repeater ID="rptTopMenu" runat="server"
onitemdatabound="rptTopMenu_ItemDataBound">
<HeaderTemplate>
<ul id="nav">
</HeaderTemplate>
<ItemTemplate>
<li ><a href="<%# Eval("MenuUrl") %>"><span><%# Eval("MenuTitle") %></span></a>
<asp:Repeater ID="rptSubMenu" runat="server">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li><a href="<%# Eval("MenuUrl") %>"><%# Eval("MenuTitle") %></a></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
onitemdatabound="rptTopMenu_ItemDataBound">
<HeaderTemplate>
<ul id="nav">
</HeaderTemplate>
<ItemTemplate>
<li ><a href="<%# Eval("MenuUrl") %>"><span><%# Eval("MenuTitle") %></span></a>
<asp:Repeater ID="rptSubMenu" runat="server">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li><a href="<%# Eval("MenuUrl") %>"><%# Eval("MenuTitle") %></a></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</ asp:Repeater>
动态menu 后台code
/// <summary>
/// Load Top Menu.
/// </summary>
private void LoadTopMenu()
{
_MemberRoles = Roles.GetRolesForUser(UserName);
MemberService memberService = new MemberService();
ReadOnlyCollection<GoldnexMenu> goldnexMenu = memberService.LoadTopMenuList(_MemberRoles);
List<GoldnexMenu> list = new List<GoldnexMenu>();
for (int i = 0; i < goldnexMenu.Count; i++)
{
string[] allowUsers = goldnexMenu[i].AllowUsers.Split(',');
if (allowUsers.Contains("*"))
{
list.Add(goldnexMenu[i]);
}
else
{
for (int j = 0; j < _MemberRoles.Length; j++)
{
if (allowUsers.Contains(_MemberRoles[j]))
{
list.Add(goldnexMenu[i]);
break;
}
}
}
}
rptTopMenu.DataSource = list;
rptTopMenu.DataBind();
}
/// <summary>
/// Current UserName
/// </summary>
public string UserName
{
get
{
return _UserName;
}
set
{
_UserName = value;
}
}
/// <summary>
/// bind sub menu
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void rptTopMenu_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rptSubMenu = (Repeater)e.Item.FindControl("rptSubMenu");
GoldnexMenu goldnexMenu = (GoldnexMenu)e.Item.DataItem;
int topID = goldnexMenu.MenuID;
MemberService memberService = new MemberService();
ReadOnlyCollection<GoldnexMenu> subMenuList = memberService.LoadSubMenuList(_MemberRoles,topID);
rptSubMenu.DataSource = subMenuList;
rptSubMenu.DataBind();
}
/// Load Top Menu.
/// </summary>
private void LoadTopMenu()
{
_MemberRoles = Roles.GetRolesForUser(UserName);
MemberService memberService = new MemberService();
ReadOnlyCollection<GoldnexMenu> goldnexMenu = memberService.LoadTopMenuList(_MemberRoles);
List<GoldnexMenu> list = new List<GoldnexMenu>();
for (int i = 0; i < goldnexMenu.Count; i++)
{
string[] allowUsers = goldnexMenu[i].AllowUsers.Split(',');
if (allowUsers.Contains("*"))
{
list.Add(goldnexMenu[i]);
}
else
{
for (int j = 0; j < _MemberRoles.Length; j++)
{
if (allowUsers.Contains(_MemberRoles[j]))
{
list.Add(goldnexMenu[i]);
break;
}
}
}
}
rptTopMenu.DataSource = list;
rptTopMenu.DataBind();
}
/// <summary>
/// Current UserName
/// </summary>
public string UserName
{
get
{
return _UserName;
}
set
{
_UserName = value;
}
}
/// <summary>
/// bind sub menu
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void rptTopMenu_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rptSubMenu = (Repeater)e.Item.FindControl("rptSubMenu");
GoldnexMenu goldnexMenu = (GoldnexMenu)e.Item.DataItem;
int topID = goldnexMenu.MenuID;
MemberService memberService = new MemberService();
ReadOnlyCollection<GoldnexMenu> subMenuList = memberService.LoadSubMenuList(_MemberRoles,topID);
rptSubMenu.DataSource = subMenuList;
rptSubMenu.DataBind();
}
}