none
Criar um menu dinamico no asp net RRS feed

  • Pergunta

  • Pessoal tenho uma tabela de menu e uma menugrupo na qual defino qual o grupo vai ter acesso a determinado menu, gostaria de saber como faço para implanter isso no asp net (Web Form)  no visual studio 2010?

    Preciso criar esse menu dinamico no meu sistema web

    no aguardo

    Reginaldo Ribeiro

     

    • Movido AndreAlvesLima terça-feira, 9 de novembro de 2010 21:34 (De:.NET Development - Geral)
    terça-feira, 9 de novembro de 2010 18:52

Respostas

  • Pessoal eu encontrei uma materia que faz exatamente o que eu quero, o unico problema é que a linguagem usada para a programação é o c# e nao conheço, só conheço o asp net.

    veja a materia abaixo.

    Alguem poderia tentar converter pra mim.

    Exemplo passo-a-passo:

     1: Adicionar o server control Menu no webform:

        Adicionar o server control Menu ao webform e mudar a propriedade "ID" para "menuExemplo".


     2: Criação da classe ModuloItem:

    public
    class ModuloItem
    {
     
    public Int32 idItem { get; set
    ; }
      public string modulo { get; set
    ; }
      public string descricao { get; set
    ; }
      public string link { get; set
    ; }
    }


     3: Criação da List<ModuloItem>  e população de dados para teste:

        Por ser exemplo, o código foi colocado no Page_Load do webform.

        Nesse ponto do código é onde você irá substituir pela fonte de dados, como por exemplo, os dados retornados de uma consulta ao banco de dados.

     protected void Page_Load(object sender, EventArgs e)
    {

      #region Popular dados   
      List
    <ModuloItem> objItemMenu = new List<ModuloItem
    >();
     
     
    ModuloItem moduloItemTemp; new ModuloItem
    ();
      moduloItemTemp.idItem = 1;
     
    moduloItemTemp.modulo = "Cadastro"
    ;
      moduloItemTemp.descricao =
    "Produto"
    ;
      moduloItemTemp.link =
    "~/Cadastro/Produto/Default.aspx"
    ;
      objItemMenu.Add(moduloItemTemp);

      moduloItemTemp = new ModuloItem
    ();
      moduloItemTemp.idItem = 2;
     
    moduloItemTemp.modulo = "Cadastro"
    ;
      moduloItemTemp.descricao =
    "Cliente"
    ;
      moduloItemTemp.link =
    "~/Cadastro/Cliente/Default.aspx"
    ;
      objItemMenu.Add(moduloItemTemp);

      moduloItemTemp = new ModuloItem
    ();
      moduloItemTemp.idItem = 3;
     
    moduloItemTemp.modulo = "Cadastro"
    ;
      moduloItemTemp.descricao =
    "Fornecedor"
    ;
      moduloItemTemp.link =
    "~/Cadastro/Fornecedor/Default.aspx"
    ;
      objItemMenu.Add(moduloItemTemp);

      moduloItemTemp = new ModuloItem();
      moduloItemTemp.idItem = 4;
     
    moduloItemTemp.modulo = "Faturamento"
    ;
      moduloItemTemp.descricao =
    "Emitir Nota Fiscal"
    ;
      moduloItemTemp.link =
    "~/Faturamento/EmitirNf.aspx"
    ;
      objItemMenu.Add(moduloItemTemp);

    #endregion 

     

     4: Loop para percorrer os itens da List<ModuloItem> e montar a estrutura do menu:

      MenuItem menuItem = new MenuItem();
     
      MenuItem menuSubItem = new MenuItem
    ();
     
    Int16 iMenu = 0;
     
     
    for (int i = 0; i < objItemMenu.Count; i++)
     
    {
     
     
    ///Criar novo item no menu de acordo com o mdulo, ou seja, para cada mdulo ter um item no menu.   
        if
    (menuItem.Text == string
    .Empty || (objItemMenu[i].modulo != objItemMenu[i - 1].modulo))
        
    {
          
    menuItem =
    new MenuItem(); "Clique para acessar: " + objItemMenu[i].descricao;
          
    menuItem.NavigateUrl =
    "javascript:;"
    ;
       
    }
     

       ///
    Adicionar o subitem no menu
      
    menuSubItem = new MenuItem
    ();
      
    menuSubItem.Text = objItemMenu[i].descricao;
      
    menuSubItem.NavigateUrl = objItemMenu[i].link;
      
    menuSubItem.ToolTip =
    "Id do item: " + objItemMenu[i].idItem.ToString();
       
    menuItem.ChildItems.Add(menuSubItem); 
       

        //Adicionar os itens criados ao menu (MenuExemplo.Items.AddAt)
      
    if
    (i+1 < objItemMenu.Count)
      
    {

          if(objItemMenu[i].modulo != objItemMenu[i + 1].modulo)
          
    {
           
    MenuExemplo.Items.AddAt(iMenu, menuItem);
           
    iMenu++;
          
    }

         
    else
         
    {
           
    MenuExemplo.Items.AddAt(iMenu, menuItem);
          
    } 
      }
     

    terça-feira, 9 de novembro de 2010 23:15

Todas as Respostas

  • R,

     

        Sua pergunta esta meio abrangente.... rs...

        Você pode dizer que tipo de menu? Flyout, IPHone, Treeview, etc?

        De qualquer forma, uma maneira simples é usar as tags UL e LI dentro de um repeater...

     

    Att,

    Ricardo

    terça-feira, 9 de novembro de 2010 19:33
  • Prezado(a),

    Estou migrando seu post para o fórum de ASP.NET.

    Por favor, das próximas vezes que tiver alguma dúvida relacionada a esse assunto, poste por lá.

    Obrigado.


    André Alves de Lima
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    terça-feira, 9 de novembro de 2010 21:34
  • Monte o menu em Javascript, e gere um JSON ou XML para alimentar o menu de acordo com sua tabela no db 
    terça-feira, 9 de novembro de 2010 22:46
  • terça-feira, 9 de novembro de 2010 22:47
  • Pessoal eu encontrei uma materia que faz exatamente o que eu quero, o unico problema é que a linguagem usada para a programação é o c# e nao conheço, só conheço o asp net.

    veja a materia abaixo.

    Alguem poderia tentar converter pra mim.

    Exemplo passo-a-passo:

     1: Adicionar o server control Menu no webform:

        Adicionar o server control Menu ao webform e mudar a propriedade "ID" para "menuExemplo".


     2: Criação da classe ModuloItem:

    public
    class ModuloItem
    {
     
    public Int32 idItem { get; set
    ; }
      public string modulo { get; set
    ; }
      public string descricao { get; set
    ; }
      public string link { get; set
    ; }
    }


     3: Criação da List<ModuloItem>  e população de dados para teste:

        Por ser exemplo, o código foi colocado no Page_Load do webform.

        Nesse ponto do código é onde você irá substituir pela fonte de dados, como por exemplo, os dados retornados de uma consulta ao banco de dados.

     protected void Page_Load(object sender, EventArgs e)
    {

      #region Popular dados   
      List
    <ModuloItem> objItemMenu = new List<ModuloItem
    >();
     
     
    ModuloItem moduloItemTemp; new ModuloItem
    ();
      moduloItemTemp.idItem = 1;
     
    moduloItemTemp.modulo = "Cadastro"
    ;
      moduloItemTemp.descricao =
    "Produto"
    ;
      moduloItemTemp.link =
    "~/Cadastro/Produto/Default.aspx"
    ;
      objItemMenu.Add(moduloItemTemp);

      moduloItemTemp = new ModuloItem
    ();
      moduloItemTemp.idItem = 2;
     
    moduloItemTemp.modulo = "Cadastro"
    ;
      moduloItemTemp.descricao =
    "Cliente"
    ;
      moduloItemTemp.link =
    "~/Cadastro/Cliente/Default.aspx"
    ;
      objItemMenu.Add(moduloItemTemp);

      moduloItemTemp = new ModuloItem
    ();
      moduloItemTemp.idItem = 3;
     
    moduloItemTemp.modulo = "Cadastro"
    ;
      moduloItemTemp.descricao =
    "Fornecedor"
    ;
      moduloItemTemp.link =
    "~/Cadastro/Fornecedor/Default.aspx"
    ;
      objItemMenu.Add(moduloItemTemp);

      moduloItemTemp = new ModuloItem();
      moduloItemTemp.idItem = 4;
     
    moduloItemTemp.modulo = "Faturamento"
    ;
      moduloItemTemp.descricao =
    "Emitir Nota Fiscal"
    ;
      moduloItemTemp.link =
    "~/Faturamento/EmitirNf.aspx"
    ;
      objItemMenu.Add(moduloItemTemp);

    #endregion 

     

     4: Loop para percorrer os itens da List<ModuloItem> e montar a estrutura do menu:

      MenuItem menuItem = new MenuItem();
     
      MenuItem menuSubItem = new MenuItem
    ();
     
    Int16 iMenu = 0;
     
     
    for (int i = 0; i < objItemMenu.Count; i++)
     
    {
     
     
    ///Criar novo item no menu de acordo com o mdulo, ou seja, para cada mdulo ter um item no menu.   
        if
    (menuItem.Text == string
    .Empty || (objItemMenu[i].modulo != objItemMenu[i - 1].modulo))
        
    {
          
    menuItem =
    new MenuItem(); "Clique para acessar: " + objItemMenu[i].descricao;
          
    menuItem.NavigateUrl =
    "javascript:;"
    ;
       
    }
     

       ///
    Adicionar o subitem no menu
      
    menuSubItem = new MenuItem
    ();
      
    menuSubItem.Text = objItemMenu[i].descricao;
      
    menuSubItem.NavigateUrl = objItemMenu[i].link;
      
    menuSubItem.ToolTip =
    "Id do item: " + objItemMenu[i].idItem.ToString();
       
    menuItem.ChildItems.Add(menuSubItem); 
       

        //Adicionar os itens criados ao menu (MenuExemplo.Items.AddAt)
      
    if
    (i+1 < objItemMenu.Count)
      
    {

          if(objItemMenu[i].modulo != objItemMenu[i + 1].modulo)
          
    {
           
    MenuExemplo.Items.AddAt(iMenu, menuItem);
           
    iMenu++;
          
    }

         
    else
         
    {
           
    MenuExemplo.Items.AddAt(iMenu, menuItem);
          
    } 
      }
     

    terça-feira, 9 de novembro de 2010 23:15
  • Bom dia Reginaldo !

    Você pode converter acessando http://www.developerfusion.com/tools/convert/csharp-to-vb/.

    • Sugerido como Resposta Harley Araujo quinta-feira, 11 de novembro de 2010 11:59
    quinta-feira, 11 de novembro de 2010 11:59