Carregar menu dinamicamente
Bom dia a todos!
Estou precisando com urgencia desenvolver uma forma de carregar os itens de um aspnet menu dinamicamente com dados vindos do banco de dados, conforme perfil do usuário. Pesquisando na net, encontrei os seguintes artigos do Maurício Junior:
http://www.ecode10.com/artigo/944/Artigo-Convertido-Temporariamente.aspx
http://www.ecode10.com/artigo/947/Artigo-Convertido-Temporariamente.aspx
http://www.ecode10.com/artigo/948/Artigo-Convertido-Temporariamente.aspx
Porem, mesmo tentando seguir o artigo, não consegui sucesso. Senti falta de mais clareza nas informações e na explicação de certas etapas do processo.
Alguem conhece esses artigos eu ja conseguiu fazer algo desse tipo?
Se alguem puder me ajudar a desenvolver essa funcionalidade, agradeço muito!
Abraços!
Estou precisando com urgencia desenvolver uma forma de carregar os itens de um aspnet menu dinamicamente com dados vindos do banco de dados, conforme perfil do usuário. Pesquisando na net, encontrei os seguintes artigos do Maurício Junior:
http://www.ecode10.com/artigo/944/Artigo-Convertido-Temporariamente.aspx
http://www.ecode10.com/artigo/947/Artigo-Convertido-Temporariamente.aspx
http://www.ecode10.com/artigo/948/Artigo-Convertido-Temporariamente.aspx
Porem, mesmo tentando seguir o artigo, não consegui sucesso. Senti falta de mais clareza nas informações e na explicação de certas etapas do processo.
Alguem conhece esses artigos eu ja conseguiu fazer algo desse tipo?
Se alguem puder me ajudar a desenvolver essa funcionalidade, agradeço muito!
Abraços!
Thomás Moreira
Curtidas 0
Respostas
Thomás Moreira
27/01/2012
Galera!
Alguem ai pra ajudar??? Por favor!
Valeu!
Alguem ai pra ajudar??? Por favor!
Valeu!
GOSTEI 0
Joel Rodrigues
27/01/2012
Não sei em que parte está sua dificuldade, mas em geral, o esquema é o seguinte:
Para cada linha na tabela, supondo a existência das colunas TEXTO e URL, criamos um MenuItem e adicionamos ao menu (NavigationMenu).
foreach (DataRow r in tab.Rows)
{
MenuItem item = new MenuItem();
item.Text = r[TEXTO].ToString();
item.NavigateUrl = r[URL].ToString();
NavigationMenu.Items.Add(item);
}
Para cada linha na tabela, supondo a existência das colunas TEXTO e URL, criamos um MenuItem e adicionamos ao menu (NavigationMenu).
GOSTEI 0
Thomás Moreira
27/01/2012
A dificuldade está mais em manter os dados vindos do banco (SQL), contendo todo perfil de acesso do usuario, na sessão, para que fique mais facil acessar. Isso seria usado numa master page.
GOSTEI 0
Joel Rodrigues
27/01/2012
Mostre aí estrutura das tabelas que registram o perfil do usuário e de que forma você precisa montar esse menu.
GOSTEI 0
Leonardo Wintrich
27/01/2012
Primeiro criei uma estrutura de dados onde eu posso armazenar uma lista com os dados de forma estruturada(pai/filho)
Depois montei uma rotina que preenche essa estrutura e armazena numa session. Provavelmente vc vai ter uma rotina dessa retornando os dados do banco de dados
E por fim uma rotina que monta o menu de acordo com o que vem da sessão
Segue um print com esses métodos na masterpage
E por fim um print do resultado
Qualque duvida me mande um email que te mando o projeto todo.
Abraços
public class MenuDinamico
{
public int itemPai { get; set; }
public int itemId { get; set; }
public string nmItem { get; set; }
public string pagItem { get; set; }
public MenuDinamico()
{ }
}
Depois montei uma rotina que preenche essa estrutura e armazena numa session. Provavelmente vc vai ter uma rotina dessa retornando os dados do banco de dados
private void PreencheDadosMenu()
{
var vLista = new List<MenuDinamico>();
MenuDinamico vMenu = new MenuDinamico();
vMenu.itemPai = 0;
vMenu.itemId = 1;
vMenu.nmItem = Produtos;
vMenu.pagItem = ~/Produtos.aspx;
vLista.Add(vMenu);
vMenu = new MenuDinamico();
vMenu.itemPai = 0;
vMenu.itemId = 2;
vMenu.nmItem = Clientes;
vMenu.pagItem = ~/Clientes.aspx;
vLista.Add(vMenu);
vMenu = new MenuDinamico();
vMenu.itemPai = 1;
vMenu.itemId = 1;
vMenu.nmItem = Produto 1;
vMenu.pagItem = ~/Produtos1.aspx;
vLista.Add(vMenu);
vMenu = new MenuDinamico();
vMenu.itemPai = 1;
vMenu.itemId = 2;
vMenu.nmItem = Produto 2;
vMenu.pagItem = ~/Produtos2.aspx;
vLista.Add(vMenu);
vMenu = new MenuDinamico();
vMenu.itemPai = 2;
vMenu.itemId = 1;
vMenu.nmItem = Clientes 1;
vMenu.pagItem = ~/Clientes1.aspx;
vLista.Add(vMenu);
Session[Menu] = vLista;
}
E por fim uma rotina que monta o menu de acordo com o que vem da sessão
private void MontaMenu()
{
var vListaMenu = (List<MenuDinamico>)Session[Menu];
var vListaitem0 = from p in vListaMenu where p.itemPai == 0 select p;
foreach (var item in vListaitem0)
{
//para cada item zero, adiciona item zero
MenuItem itemMenu = new MenuItem();
itemMenu.Text = item.nmItem;
itemMenu.NavigateUrl = item.pagItem;
Menu1.Items.Add(itemMenu);
//varre lista procurando filhos
var vListaFilhos = from p in vListaMenu where p.itemPai == item.itemId select p;
foreach (var itemFilho in vListaFilhos)
{
//para cada item zero, adiciona item zero
MenuItem itemMenuFilho = new MenuItem();
itemMenuFilho.Text = itemFilho.nmItem;
itemMenuFilho.NavigateUrl = itemFilho.pagItem;
itemMenu.ChildItems.Add(itemMenuFilho);
}
}
}
Segue um print com esses métodos na masterpage
E por fim um print do resultado
Qualque duvida me mande um email que te mando o projeto todo.
Abraços
GOSTEI 0
Leonardo Wintrich
27/01/2012
O email é:
Leonardowintrich@gmail.com
Leonardowintrich@gmail.com
GOSTEI 0
Thomás Moreira
27/01/2012
Bom dia Leonardo, blz?
Valeu pela atenção!
Vou fazer um teste ainda hoje com os codigos que você passou e amanha te retorno ok?
Muito obrigado!
Abraço!
Valeu pela atenção!
Vou fazer um teste ainda hoje com os codigos que você passou e amanha te retorno ok?
Muito obrigado!
Abraço!
GOSTEI 0
Thomás Moreira
27/01/2012
Boa tarde Leonardo! Blz?
Demorei um pouco pra responder né?
Consegui fazer a parada! Aparentemente tá tudo OK.
Valeu pela força!
Abraço!
Demorei um pouco pra responder né?
Consegui fazer a parada! Aparentemente tá tudo OK.
Valeu pela força!
Abraço!
GOSTEI 0