CRIANDO MENU DINÂMICO COM C#.NET Passo 1


por Mauricio Junior em 1/1/2011 0

 

Estarei criando primeiramente um menu para ser utilizado por um sistema.

É bem simples de desenvolver e usar. Este artigo é dividido em duas partes. Estarei usando um componente free chamado skyMenu. Esse componente é feito apenas para ler um arquivo xml e mostrar em uma página .aspx. Estarei explicando passo a passo de como fazer o menu dinâmico para ser utilizado em qualquer sistema.

 

Criei um projeto chamado Artigos. Adicionei uma pasta chamada menu e dentro adicionei um arquivo chamado menu.ascx. Veja a figura 1-1 e 1-2.

 

Referência: 1-1

 

Cliquei com o botão direito em cima do projeto, fui ao menu Add Folder, logo após Regular Folder, digitei o nome menu. Figura 1-2.

 

Referência: 1-2

 

Depois da pasta criada, cliquei com o botão direito em cima da pasta menu, logo apo Add New Item..., adicionando um arquivo user control. Não esqueça que um arquivo user control, tem a extensão .ascx. Veja na figura 1-3 o passo a passo.

 

 

Referência: 1-3

 

A figura 1-4 mostra apenas user control, colocando o nome menu.ascx.

 

 

Referência: 1-4

 

Depois de criado, tenho que adicionar uma dll de referência no projeto para usá-la. Essa dll estará disponível para download neste artigo. Clique com o botão direito em cima do projeto e clique Add Reference, e escolha a dll. Veja na figura 1-5.

 

 

Referência: 1-5

 

A figura de referência 1-6 apenas mostra adicionando a dll no projeto para ser usada mais tarde. Lembre-se que essa dll é grátis e pode ser adicionada no seu projeto apenas clicando no Add Reference...

 

 

Referência: 1-6

 

 

Adicione dentro da página menu.ascx o código abaixo:

 

<%@ Register TagPrefix="cc1" Namespace="skmMenu" Assembly="skmMenu" %>

<cc1:menu id="Menu1" runat="server" ItemPadding="5" ItemSpacing="0" zIndex="2000" Font-Size="8pt"

            MenuFadeDelay="1" Cursor="Pointer" SubMenuCssClass="menu" Layout="Horizontal" HighlightTopMenu="false">

            <SelectedMenuItemStyle CssClass="menuSelecionado"></SelectedMenuItemStyle>

</cc1:menu>

 

Estou utilizando o menu dentro da página menu.ascx. Note que esse menu funciona em qualquer brownser, tanto faz se é IE, Mozilla ou FireFox, funciona do mesmo jeito e do mesmo layout. Esse código acima foi inserido na parte HTML da página.

Antes de inserir o code-behing da página menu.ascx, terei que criar um arquivo xml, pode ser de qualquer nome, estarei colocando o nome do mesmo como menu.xml. Adicione da mesma forma como adicionou o menu.ascx o menu.xml.

 

 

Referência: 1-7

 

Veja a figura de referência 1-8, mostra o código xml do arquivo do menu.xml.

 

Referência: 1-9

 

Depois de criar o arquivo menu.xml definindo o menu, abri o arquivo menu.ascx, cliquei duas vezes na página normalmente e adicionei o código abaixo:

 

protected void preencheMenu()

{

this.Menu1.DataSource = "http://localhost/Artigos/menu/menu.xml";

this.Menu1.DataBind();

}

 

Criei apenas um método protected chamado preencheMenu(), adicionando o datasource do Menu1, indicando o xml criado anteriormente. Logo depois, mando preencher o objeto com o DataBind().

Cliquei com o botão direito em cima do projeto e adicionei mais uma página chamada default.aspx, por enquanto a mesma terá só um prefixo incluindo o arquivo menu.ascx. Funciona como se fosse include no ASP 3.0.

 

Veja o código abaixo junto com a explicação:

 

Primeiramente adicionei um Prefixo indicando o nome do arquivo ascx.

<%@ Register TagPrefix="Prefixo" TagName="menu" src="menu/menu.ascx" %>

 

Depois de colocar o endereço correto do arquivo, uso o mesmo mais abaixo, com o seguinte código:

 

Prefixo: Nome do tagPrefix,

Id= pode ser qualquer nome

Runat = sempre deve ser o server

Fecha a tag.

 

<Prefixo:menu id="menu" runat="server"></Prefixo:menu>

 

A figura de referência 1-10 mostra como o código ficará na página default.aspx.

 

Referência: 1-10

 

Coloquei como página inicial do projeto o arquivo default.aspx e iniciei a aplicação. Veja na figura de referência 1-11 o funcionamento do menu. O interessante é que o menu funciona em qualquer brownser sem problemas.

 

Referência: 1-11

 

Espero que tenham gostado.

Mauricio Junior

mauricio@ascompras.com

 

 

 

 

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:
Comentado por: Carlos Junior - 24/7/2006 21:38:10
O melhor tutorial que eu já li...
Obrigado
Comentado por: Mauricio Junior - 24/7/2006 21:58:33
Por nada Carlos Junior, espero que continue gostando de nossos artigos, vídeos e forum junto a comunidade aspneti.com.

Abraços.
Comentado por: otilia - 6/6/2007 15:42:03
Aonde consigo a dll skyMenu?
Comentado por: Emmanuela Luz marques - 29/8/2007 14:30:44
Seria mais interessante se o skymenu ao qual se referiu e citou como um download possível estivesse realmente disponível. É uma pena que seu turorial se baseie em algo não fornecido e se torne, portanto, inaplicável.
Comentado por: KOF - 4/10/2007 16:10:07
Esta dificil de fazer isto em Asp.NET 3.0
Ainda mais por ser dificil achar para download do componente SkyMenu.dll
Comentado por: Luiz Antonio D.E. Franco - 19/3/2008 0:00:00
Aonde eu consigo a dll skyMenu para download a qual se refere esse artigo se pd me auxiliar desde já muito obrigado
Comentado por: Patricia - 28/3/2008 0:00:00
Oi Luiz
para fazer o download acesse

www.skmmenu.com



Comentado por: Jorge Dória - 4/6/2008 0:00:00
Só não gostei de uma coisa. Onde está o link para baixar o componente skyMenu?
Comentado por: aderitro - 2/7/2008 0:00:00
gostei do artigo porem poderia telo de modo para baixar igual o passo 2.
Sugestao os seus artigos e de todos os colegas poderia ter algum recurso de efetuar o dowloads pois quando imprimir nao sairia todos as propagandas....sei o comercial disto porem
Comentado por: aderitro - 2/7/2008 0:00:00
gostei do artigo porem poderia telo de modo para baixar igual o passo 2.
Sugestao os seus artigos e de todos os colegas poderia ter algum recurso de efetuar o dowloads pois quando imprimir nao sairia todos as propagandas....sei o comercial disto porem
Comentado por: Johni Carrilho Amafont - 8/9/2008 0:00:00
Achei legal o exemplo, já peguei o EXEMP-2. E ele já vem com a dll "skiMenu.dll", vou testar isto hj. mesmos. Mas desde já agradeço ao autor deste artigo, visto que deve ser de boa avalia. ParaBens !
Comentado por: Jair - 8/10/2008 0:00:00
Interessante o artigo, o problema é que todo mundo usa arquivo XML pra criar os menus dinâmicos e o infame do arquivo está sempre já definito, ou seja, ninguém ensina a gerar um arquivo a partir dos dados do menu lidos do banco. Aì fica difícil.

Comentado por: Letícia Olave Brito Margarites - 17/11/2010 0:00:00
Mauricio, estou tentando fazer um componente "menu" ser construído através de um retorno da stored procedure. Essa vai retornar os itens possiveis para cada usuário. esse componente suporta esse tipo de funçao? Aguardo retorno urgente
Comentado por: Mauricio Junior - 23/11/2010 0:00:00
Letícia,
Basta você acessar o link abaixo que tem um menu sendo montado via banco de dados. www.aspneti.com/utilizando+asp+menu+919,0.aspx
Comentado por: Rafael Temer Fers de Almeida - 12/1/2011 0:00:00
Mauricio, o seu menu é muito bom só que ele não funciona muito bem para 2 menus... mas muito bom o artigo
Comentado por: Mauricio Junior - 12/1/2011 0:00:00
Olá Rafael, o que quer dizer com para 2 menus?
Comentado por: Rafael Temer Fers de Almeida - 12/1/2011 0:00:00
Mauricio, Estou tentando colocar este menu na MasterPage, mas ele não funciona muito bem, o grandre problema é: eu crio 2 menus no xml igual vocês esta falando no artigo, mas quando eu faço a exibição da pagina no browser, exibe os submenus somente no primeiro menu. Quando eu vou ao menu 2 os itens aparecem no menu 1. Se puder me ajudar eu agradeço.
Comentado por: LUAN SIDNEY - 30/1/2012 0:00:00
Mauricio, segui o tutorial e no IE funcionou perfeitamente. Porém, no firefox e no chrome, quando se encosta o mouse nos menus, o menu desce no canto esquerdo. Tanto na Vertical, quanto na horizontal esta acontecendo isso. Obrigado.
Comentado por: Mauricio Junior - 30/1/2012 0:00:00
Luan, peço que você retire todos os estilos da sua página, incluindo da master page para testar a compatibilidade. Não importa o que você tenha apenas um stylo, retire todos por gentileza.

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

Ebook: Desenvolvendo WebServices
Gerando word com Visual Studio.NET 2005
Copiando Script
Vídeos Online Gratuitos
Visual Studio 11 - Melhoria no estilo CSS
IsDecimal
Convertendo String para Guid
MSDN Code Gallery
GridView Parte I
Append Data Bound Items
Generics na prática
Entrevista com Bruno PorKaria
Descobrindo os dias do mês e final de semana
Trabalhando com Session
Aprenda com Windows Azure
Download grátis - Sistema de Controle de Combustível
Educação no Brasil
VSS Versionador - Resumão
Integração é necessário
Comando para compilação .NET
Documento padrão de desenvolvimento
GMaps com ASP.NET
Generics usando Object DataSource
Trabalhando com GridView e DataKeyNames com Várias Chaves
Usando PopupControlExtender
GridView Parte II
Dica de Segurança no Arquivo de Configuração - Web / App .config
Trabalhando com Sessão dentro do Windows Forms
Ophone The Microsoft - Vídeo
Vídeo - Tecla de Atalho
Gravando Erros com Exception - Parte I
Dica para buscar nome de tabelas ou stored procedures dentro do banco de dados
Visual Studio 11 – Melhorias e inovações parte 5
Criando TreeView com Visual Studio.NET 2005 (passo 1)
DataGrid Mobile