Abrindo o menu apenas com o clique


por Mauricio Junior em 1/1/2011 0

        Olá leitor, gostaria de informar hoje e mostrar como deixar o menu do asp.net funcionando apenas com o clique, isto é, se o mouse for passado em cima do menu ele não vai abrir, só abre quando o usuário clique com o mouse na opção.

    Em artigo anterior, mostrei como montar o menu com os dados do banco de dados, agora vou mostrar como customizá-lo no clique.

Utilizado: Plataforma ASP.NET, Ferramenta Visual Studio 2010, Linguagem C#.NET, Javascript.

    Depois de montar o menu de forma dinâmica, um método javascript é acionado para mudar a configuração colocando a propriedade onmousover.

Link: http://www.ecode10.com/article/pesquisar.aspx?cx=002752061519271927076:ikair1khkau&cof=FORID%3A11&ie=UTF-8&sa=Pesquisar&q=menu

Código

 

<asp:Menu ID="menuSistema" runat="server" DisappearAfter="4000" EnableTheming="false" Orientation="Horizontal" Height="10px" Font-Names="Arial" Font-Bold="true">

 

<StaticMenuItemStyle ForeColor="Black" HorizontalPadding="5px" Height="15px" BorderWidth="1px" BorderColor="Transparent" Font-Size="11pt" />

 

<StaticHoverStyle BackColor="Transparent" CssClass="staticHoverStyle" ForeColor="#ffffff" BorderColor="#f8f8f8" BorderWidth="1px" />

<StaticSelectedStyle BackColor="#d4d4d4" ForeColor="#ffffff" BorderColor="Transparent" BorderWidth="1px" />

<DynamicMenuStyle BackColor="#f5f5f5" ForeColor="#ffffff" BorderColor="#b4b4b4" BorderWidth="1px" />

<DynamicMenuItemStyle Height="28px" HorizontalPadding="15px" Width="100%" Font-Size="10pt" ForeColor="#666666" Font-Bold="false" />

<DynamicHoverStyle ForeColor="#ffffff" CssClass="dynamicHoverStyle" BackColor="Transparent" />

 

</asp:Menu>

 

eCode 1

    Esse código é a parte do HTML usando o componente asp:Menu. Coloquei alguns estilos no menu para melhorar o visual. Foi falado isso no artigo anterior publicado.

    Passando para a parte de javascript, para pegar o componente na parte de HTML preciso usar o GetElementById. (eCode 2)

 

var obj = document.getElementById("<%=menuSistema.ClientID %>");

 

eCode 2

    O valor do getElementById é o nome do meu componente adicionando ponto ClientID. Esse nome é o que aparece junto ao HTML e aberto a linguagens de interpretação.

    Depois eu faço um for verificando se o menu é diferente do Sair e adicionando o atributo “onmouseouver”. (eCode3)


 

for (i = 0; i < Links.length; i++) {

 if (Links[i].href != "javascript:Sair();") {

 Links[i].href = "javascript:Menu_HoverStatic(ctl00_menuSisteman" + i.toString() + ")";

  var obj = document.getElementById("ctl00_menuSisteman" + i.toString());

  obj.setAttribute("onmouseover", "void(0)");

  }

}

 

eCode 3

        Noteque o link é verificado, e no final o atributo é adicionado dinamicamente aomenu. O onmouseover com o valor void(0), ou seja, não faz nada quando passar omouse em cima do menu. Bem simples não é? Não se esqueça de chamar o método nofinal da página onde está o menu, no meu caso na página .Master.

       Segueabaixo todo o código emulado por mim. (eCode 4)

 

<script type="text/javascript">

        function AlterarMenu() {

            var obj = document.getElementById("<%=menuSistema.ClientID %>");

            var Links = obj.getElementsByTagName("a");

            //alert(Links.length);

 

            for (i = 0; i < Links.length; i++) {

                alert(Links[i].href);

                if (Links[i].href != "http://endereco/Logoff.aspx") {

                    Links[i].href = "javascript:Menu_HoverStatic(ctl00_menuSisteman" + i.toString() + ")";

                    var obj = document.getElementById("ctl00_menuSisteman" + i.toString());

                    obj.setAttribute("onmouseover", "void(0)");

                }

            }

 

        }

 

        function MouseOverMenu(obj) {

            obj.className = "MenuMouseOver";

        }

        AlterarMenu();

    </script>

 

 

eCode 4

    O link verificado não será atribuído o onmouseover quando for a página de logoff.aspx. Essa parte você precisa programar e alterar de acordo com o seu site ou sistema. Em resumo, se você quer retirar alguma página a propriedade onmouseover, faça essa verificação no javascript como fiz no eCode 4.

    Veja a figura abaixo que mostra o resultado final.


Image 1

        Na imagem1, ao passar o mouse em cima do menu não aparece os subs-menus. Antes, aopassar o mouse apareciam todos os outros.



Image 2

    A imagem 2 mostra que ao clicar, aparece todos os subs-menus sem qualquer problema. Espero ter ajudado com mais um artigo e qualquer dúvida pode entrar em contato.

voltar   comente  subir

 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Servidor Integrado - Visual Studio.NET
Exemplo do livro Programando em C# para Web
Trabalhando com diretório e arquivo
Usando Dll Nativa e Using
Cache no .NET
DataGrid Mobile
Aprenda com Windows Azure
HTMLEditorExtender com Imagem
Entrevista com Bruno PorKaria
Ophone The Microsoft - Vídeo
Conecte - novidades tecnológicas revolucionam a medicina
Vídeo - Ler EventLog do Windows usando C#.NET
O futuro da tecnologia com a Microsoft
Generics na prática
Mudar de MasterPage em Tempo de Execução
Usando Split no C#
Visual SourceSafe
Arrumando seu Desktop
Copiando Script
Forum utilizando VS 2005 e Ajax
Orientação a Objetos - Microsoft PetShop 3.0
Upload sempre NULL
Vídeo Aula: Criando e Publicando Site de uma melhor maneira com C#.NET
Windows Phone 7, nada como aprender vendo
Nova versão iCredCard aprovado pela Apple
Vídeo do Visual SourceSafe - Parte I
Coalescing Operador C# ?? null
Utilizando o GridView e DetailsView
Ativando debug do VS no Vista
Abrindo Janela de Forma Modal
Vídeo - Themes/Skin/Stylo
Vídeo: Imagem Efeito
Importar projetos antigos para o Visual Studio 2010
Criando XML a partir do DataSet Tipado com Visual Studio.NET 2005 – Parte I
Visual SourceSafe - Série 4