quarta-feira, 4 de novembro de 2009

Montando menus dinâmicos com o controle de Menu do .net

Fala, galera!!

Segue um código para montagem de menus dinâmicos utilizando o controle de menu do .Net.
O código é bem simples. Todo o menu é baseado em XML.
Basta entender a estrutura do mesmo.

Vamos ao código:


<?xml version="1.0" encoding="utf-8" ?>
<Home>
    <Menu url="" text="Secao1">
        <SubMenu url="" text="Secao1.1">
            <SubMenu url="" text="Secao1.1.1">
                <SubMenu url="" text="Secao1.1.1.1">
                    <SubMenu url="conteudo.aspx?CodSecao=31" text="Secao1.1.1.1.1">
                    </SubMenu>
                </SubMenu>
            </SubMenu>
            <SubMenu url="conteudo.aspx?CodSecao=23" text="Secao1.1.3">
            </SubMenu>
        </SubMenu>
        <SubMenu url="" text="Secao1.2">
            <SubMenu url="conteudo.aspx?CodSecao=24" text="Secao1.2.1">
            </SubMenu>
        </SubMenu>
        <SubMenu url="" text="Secao1.3">
            <SubMenu url="" text="Secao1.3.1">
                <SubMenu url="conteudo.aspx?CodSecao=33" text="teste">
                </SubMenu>
            </SubMenu>
        </SubMenu>
    </Menu>
    <Menu url="" text="Secao2">
        <SubMenu url="" text="Secao2.1">
            <SubMenu url="conteudo.aspx?CodSecao=27" text="Secao2.1.1">
            </SubMenu>
            <SubMenu url="conteudo.aspx?CodSecao=28" text="Secao2.1.2">
            </SubMenu>
        </SubMenu>
        <SubMenu url="" text="Secao2.2">
            <SubMenu url="conteudo.aspx?CodSecao=29" text="Secao2.2.1">
            </SubMenu>
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=11" text="Secao2.3">
        </SubMenu>
    </Menu>
    <Menu url="" text="Secao3">
        <SubMenu url="conteudo.aspx?CodSecao=12" text="Secao3.1">
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=13" text="Secao3.2">
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=14" text="Secao3.3">
        </SubMenu>
    </Menu>
    <Menu url="" text="Secao4">
        <SubMenu url="conteudo.aspx?CodSecao=15" text="Secao4.1">
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=16" text="Secao4.2">
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=17" text="Secao4.3">
        </SubMenu>
    </Menu>
    <Menu url="" text="Secao5">
        <SubMenu url="conteudo.aspx?CodSecao=18" text="Secao5.1">
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=19" text="Secao5.2">
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=20" text="Secao5.3">
        </SubMenu>
    </Menu>
</Home>

O menu acima representa uma tabela que possui auto relacionamento.


Agora vamos falar um pouco sobre a estrutura do XML.

Como todo arquivo XML, foi necessário criarmos um elemento Root(raiz).
No nosso caso, este elemento é o elemento <home>.

Agora vamos aos itens que se repetem dentro da estrutura.

O elemento <Menu> representa o nível mais alto do menu. O nível "pai", digamos assim.
O elemento <SubMenu> é o que chamamos de "filho".

Um <Menu> pode possuir quantos <SubMenu> desejar.
Um <SubMenu> pode possuir novos <SubMenu> dentro dele. Permitindo que você crie N níveis de acordo com a hierarquia do seu site.

A propriedade text define o texto que será exibido.
A proprieadade url define o link para onde o seu menu irá apontar.
Se a propriedade url estiver em branco, o menu será renderizado sem ser "clicável".

Agora basta criar seu método para gerar o arquivo XML.
Para isso, você pode utilizar o LINQ to XML, a classe System.XML ou até mesmo gerar uma string em formato XML e salvar em um arquivo com a extensão ".xml".

Um abraço e até a próxima!!

Nenhum comentário:

Postar um comentário