• 父菜单高亮; ASP.NET Menu parent menuitem highlighting


    今天偶逛CodeProject,又发现个好东东,另一种实现父菜单选中的方法,之前找到过一个,CSSAdapters(http://www.asp.net/cssadapters)的方法,这个又是一种,都很经典的说

    这个新的方式也很不错
    我将sample code留下来,以后也会记得,嘿嘿 原文: http://www.codeproject.com/KB/webforms/AspMenuParentHighlighting.aspx

    使用js来实现的,恩,页面会有太多的js,如果菜单很多,那么应该也会很慢的应该,性能考量不见的比上面那个CSSAdapters的好,CSSAdapter配置确实要麻烦很多不过

    html
     1<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
     2
     3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     4
     5<html xmlns="http://www.w3.org/1999/xhtml">
     6<head id="Head1" runat="server">
     7    <title>Untitled Page</title>
     8    <script type="text/javascript">
     9    function HoverParents(id, parentSnake)
    10    {
    11        Menu_HoverDynamic(document.getElementById(id));
    12        var parents = parentSnake.toString().split(',');
    13        for(i = 0;i < parents.length;i++)
    14        {
    15            if(parents[i] != '')
    16            {
    17                Menu_HoverDynamic(document.getElementById(parents[i]));
    18            }

    19        }

    20    }

    21    
    22    function UnhoverParents(id, parentSnake)
    23    
    24        Menu_Unhover(document.getElementById(id));
    25        
    26        var parents = parentSnake.toString().split(',');
    27        for(i = 0;i < parents.length;i++)
    28        {
    29            if(parents[i] != '')
    30            {
    31                Menu_Unhover(document.getElementById(parents[i]));
    32            }

    33        }

    34    }

    35    
    </script>    
    36</head>
    37<body>
    38    <form id="form1" runat="server">
    39    <div>
    40    <asp:ScriptManager ID="sm" runat="server" />
    41    <asp:UpdatePanel ID="up" runat="server">
    42        <ContentTemplate>
    43        <asp:Menu ID="mainMenu" runat="server"
    44            StaticMenuItemStyle-CssClass="MenuItem"
    45            StaticHoverStyle-CssClass="MenuItemHover"
    46            StaticSelectedStyle-CssClass="MenuItemSelected"
    47            StaticPopOutImageUrl="~/Images/PopOut.png"
    48            DynamicPopOutImageUrl="~/Images/PopOut.png"
    49            DynamicMenuItemStyle-CssClass="DynamicMenuItem"
    50            DynamicHoverStyle-CssClass="MenuItemHover"
    51            StaticSubMenuIndent="0"
    52            StaticDisplayLevels="2"
    53        >
    54            <Items>
    55                <asp:MenuItem Text="Music">
    56                    <asp:MenuItem Text="Classical" />
    57                    <asp:MenuItem Text="Rock">
    58                        <asp:MenuItem Text="Electric" />
    59                        <asp:MenuItem Text="Acoustical" />
    60                        <asp:MenuItem Text="Classical4" />
    61                        <asp:MenuItem Text="Rock4">
    62                            <asp:MenuItem Text="Electric4" />
    63                            <asp:MenuItem Text="Acoustical4" />
    64                        </asp:MenuItem>                         
    65                    </asp:MenuItem>
    66                    <asp:MenuItem Text="Classical2" />
    67                    <asp:MenuItem Text="Rock2">
    68                        <asp:MenuItem Text="Electric2">
    69                            <asp:MenuItem Text="Classical3" />
    70                            <asp:MenuItem Text="Rock3">
    71                                <asp:MenuItem Text="Electric3" />
    72                                <asp:MenuItem Text="Acoustical3" />
    73                            </asp:MenuItem>                         
    74                        </asp:MenuItem>
    75                        <asp:MenuItem Text="Acoustical5" />
    76                    </asp:MenuItem>                     
    77                </asp:MenuItem>
    78            </Items>
    79        </asp:Menu>
    80        <asp:Label id="MessageLabel" runat="server" />
    81        </ContentTemplate>
    82    </asp:UpdatePanel>
    83        
    84    </div>
    85    </form>
    86</body>
    87</html>
    88

    code behind

     1using System;
     2using System.Collections.Generic;
     3using System.Configuration;
     4using System.Data;
     5using System.Linq;
     6using System.Web;
     7using System.Web.Security;
     8using System.Web.UI;
     9using System.Web.UI.HtmlControls;
    10using System.Web.UI.WebControls;
    11using System.Web.UI.WebControls.WebParts;
    12using System.Xml.Linq;
    13
    14public partial class _Default : System.Web.UI.Page 
    15{
    16    protected void Page_Load(object sender, EventArgs e)
    17    {
    18        mainMenu.MenuItemClick += new MenuEventHandler(mainMenu_MenuItemClick);
    19        string script = String.Empty;
    20
    21        List<MenuItem> list = new List<MenuItem>();
    22        list.Add(mainMenu.Items[0]);
    23        FindMenuItems(mainMenu.Items[0], list);
    24
    25        foreach (MenuItem mi in list)
    26        {
    27            List<MenuItem> parents = new List<MenuItem>();
    28            FindParents(mi, parents);
    29
    30            string parentSnake = String.Empty;
    31            foreach (MenuItem parent in parents)
    32            {
    33                parentSnake += "mainMenun" + list.IndexOf(parent).ToString() + ",";
    34            }

    35
    36            parentSnake.TrimEnd(',');
    37
    38            script += "document.getElementById('" + mainMenu.ClientID + "n" + list.IndexOf(mi).ToString() + "').onmouseover = function(){HoverParents('" + mainMenu.ClientID + "n" + list.IndexOf(mi).ToString() + "', '" + parentSnake + "')};";
    39            script += "document.getElementById('" + mainMenu.ClientID + "n" + list.IndexOf(mi).ToString() + "').onmouseout = function(){UnhoverParents('" + mainMenu.ClientID + "n" + list.IndexOf(mi).ToString() + "', '" + parentSnake + "')};";
    40        }

    41
    42        ScriptManager.RegisterStartupScript(thistypeof(string), "MenuHoverUnhover", script, true);
    43    }

    44
    45    void FindMenuItems(MenuItem mi, List<MenuItem> list)
    46    {
    47        foreach (MenuItem child in mi.ChildItems)
    48        {
    49            list.Add(child);
    50        }

    51
    52        foreach (MenuItem child in mi.ChildItems)
    53        {
    54            FindMenuItems(child, list);
    55        }

    56    }

    57
    58    void FindParents(MenuItem mi, List<MenuItem> list)
    59    {
    60        if (mi.Parent != null)
    61        {
    62            if (mi.Parent != mainMenu.Items[0])
    63            {
    64                list.Add(mi.Parent);
    65                FindParents(mi.Parent, list);
    66            }

    67        }

    68    }

    69
    70    void mainMenu_MenuItemClick(object sender, MenuEventArgs e)
    71    {
    72        MessageLabel.Text = e.Item.Text;
    73    }

    74}

    75
  • 相关阅读:
    Java合并png图片
    MiniUi遇到的一个Bug或者说坑,以div里面的内容自适应高度
    Javascript/JQuery遇到的bug
    SQL Server将列以分隔符分割后存到临时表
    Java Miniui实现批量上传文件demo 201906221520
    Java MiniUi datagrid加载数据时,如果使用virtualScroll="true",数据多一点可能就会加载不出来
    Java调用存储过程出现Bug,sql语法错误
    Java的jdbc调用SQL Server存储过程Bug201906131120
    Java的jdbc调用SQL Server存储过程Bug201906131119
    用深度优先搜索(DFS)解决多数图论问题
  • 原文地址:https://www.cnblogs.com/forward/p/1054604.html
Copyright © 2020-2023  润新知