Utilizando ASP:Menu


por Mauricio Junior em 1/1/2011 0

         Olá pessoal, hoje gostaria de falarcomo é fácil criar um menu dinâmico de acordo com o banco de dados. Em artigosantigos, eu mostrei como utilizando menu dinâmico com XML e agora gostaria demostrar algumas manhas para montar o menu com o componente .NET dinamicamente.

 

Referência:

Visual Studio .NET2008 ou 2010

Linguagem C#.NET

Banco de dados SQLServer

 

         Não tem segredo, mas peço que acompanheo passo a passo do artigo para não ter erro. Lembrando que cada exemplo abaixofoi feito de forma real e com códigos reais.

         O primeiro passo é projetar o banco dedados de maneira que fique dinâmico e limpo, com links e nomes dos menus quevão aparecer na tela. No caso de permissão de usuário ou não, crie um campoespecífico que defina essa característica ou então crie uma outra tabela dejunção do usuário com o menu. Assim basta passar apenas o usuário logado epronto.

 

Select no banco de dados

 

 

public DataTable ListarMenus(int p_UsuarioId)

        {

            StringBuilder _SQL = new StringBuilder();

 

            _SQL.Append(" SELECT m.menDescricao, m.menIndex, m.menLink              FROM dbImagonSign..Menu as m ORDER  BY m.menIndex");

 

            DataTable DT = objConexaoDbImagonSign.retornarTabela(_SQL.ToString(),"Menu");

 

            return DT;

        }

 

Code 1.

 

         O mais importante desse select é trazeros campos necessários para montar o menu com descrição, index e link. O campoindex provê e identifica qual é o menu principal e quais são os menus abaixodele.

 

Arquivo .ASPX ou MasterPage

        

         Passando agora para o arquivo .aspx ou.master (o menu pode ser carregado dentro de algum desses tipos de arquivos eoutros mais), o código colocado dentro foi: (Code 2)

 

 

<asp:Menu ID="menuSistema" runat="server" BackColor="#E2E8E8" DynamicHorizontalOffset="2"

                  Font-Names="Verdana" Font-Size="Small" ForeColor="#284E98" StaticSubMenuIndent="10px"

                  Font-Bold="True" Orientation="Horizontal">

                  <StaticSelectedStyle BackColor="#E2E8E8" />

                  <StaticHoverStyle BackColor="#E2E8E8" ForeColor="white" />

                  <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />

                  <DynamicHoverStyle BackColor="#CACFD5" ForeColor="White" />

                  <DynamicMenuStyle BackColor="#E2E8E8" />

                  <DynamicSelectedStyle BackColor="#CACFD5" />

                  <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />

        </asp:Menu>

 

Code 2.

 

         Nada de difícil até agora, pois cada sistematem a sua cor e imagem específica. Aconselho a mudar as cores de acordo com anecessidade do seu sistema. O próximo passo é colocar o código C# no Code 3.

 

 

protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            MenuItem _menuPai = null;

            MenuItem _menu = null;

            string _menuIndex = string.Empty;

 

 

 

            foreach (DataRow itemMenu in new MenuBRL().ListarMenus().Rows)

            {

                if (_menuIndex != itemMenu["menIndex"].ToString().Substring(0, 2))

                {

                    _menuIndex = itemMenu["menIndex"].ToString().Substring(0, 2);

 

                    _menuPai = new MenuItem("&nbsp;&nbsp;" + itemMenu["menDescricao"].ToString() + "&nbsp;&nbsp;",

                                            itemMenu["menDescricao"].ToString(), "", itemMenu["menLink"].ToString());

 

                    menuSistema.Items.Add(_menuPai);

                }

                else

                {

                    _menu = new MenuItem(itemMenu["menDescricao"].ToString(),

                                         itemMenu["menDescricao"].ToString(), "",

                                         itemMenu["menLink"].ToString());

 

                    _menuPai.ChildItems.Add(_menu);

                }

            }

        }

    }

Code 3.

 

         O retorno do banco de dados comoDataRow é sim, dentro do foreach alguns dados são verificados no decorrer doloop (foreach). Foi dado um espaço antes e depois do menu para ficar um poucomaior. Note as variáveis no início do método chamado MenuPai, esse é o primeiromenu e os demais submenus dei o nome de menu na minha aplicação.

         Usei sempre o MenuItem (um métodopronto do componente usado) para adicionar a descrição e o link vindos do bancode dados. No final do primeiro if, adicionei o menuPai no else adicionei omenuFilho chamado de menu com a variável do menuPai.

         Assim, cada pai tem o seus filhos eassim por diante.

         Bom, espero que tenham gostado equalquer dúvida, pode entrar em contato pelo site.


Tags: Menu, banco de dados, menu dinâmico, asp:menu, foreach
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

Microsoft Preview Windows Phone 7 in NYC
Windows Phone 7 Multi Touch
Focus()
Primeiros passos para um programador - Apple
Resources e Internacionalização usando Visual Studio.NET 2005 (Parte II)
Sistema de Login em ASP – Parte III
Gravando Erros com Exception no arquivo de log - Parte II
Microsoft Research Laptop Multi-Touch
SmartNavigation – 1.0 e 1.1 MaintainScroll PositionOn Postback – 2.0
Trabalhando com GridView e RowCommand
Emulando o Windows Phone 7 em seu celular
Vídeo: Montando o Windows Phone em NYC
Integração é necessário
O futuro da tecnologia com a Microsoft
Ordenando no DataTable
Java J2EE – Segundo Passo
MSDN Media Center - download de vídeos
Samsung em NYC
Criando XML a partir de um DATASET tipado – Parte II
Visual Studio 11 – Novas funcionalidades e melhorias parte 3
ASPNETi.COM chega aos 43 mil pageviews
Vídeo Sobre Atributes e String Builder com Visual Studio .NET 2005
Vídeo - Conecte
Trabalhando com o componente TabContainer
Descobrindo os dias do mês e final de semana
Evento em Brasília de Tecnologia
Teclas de Atalho do Visual Studio .NET 2010
Utilizando ASP:Menu
Máscara valor que funciona
Vídeo: Framework de dados - parte 1
URL Routing com o Visual Studio .NET 2010
Desenvolvendo com camadas utilizando C#
Prepare o Sql Server para o VS 2005
Vídeo Aula: Criando e Publicando Site de uma melhor maneira com C#.NET
Virtual Earth - Segundo Passo