none
Menu com <asp:tableRow> RRS feed

  • Pergunta

  • Boa Tarde,

     

    estou tentando fazer um menu com permissões de visibilidade, estas permissões estão gravadas no banco com o IDPessoaLogada, MenuPessoaLogada sendo este uma string que tem o nome do menu que a pessoa tem permissão de ver. Criei uma tabela com as linhas e celulas montando o menu, sendo que quando a pessoa logar eu vou no banco e pego a informação de quais menus eu posso exibir, usando este nome de menu do banco como o nome da linha para que eu possa colocar o Visible da linha True ai ela aparece para a pessoa. Meu menu ficou assim:

     

    Code Snippet


           
               
                 Titulo
               
           
      
               
                 » 
         Menu1

               
           
           
               
                 » 
          Menu2

               
           

     

     

    Estou colocando o codigo fora da caixa de codigo pois ficou desformatado.

    <asp:Table id="table1" runat="server" border="0" cellpadding="5" cellspacing="0" HorizontalAlign="Left" width="100%" GridLines="Horizontal">
            <asp:TableRow runat="server" id="Titulo">
                <asp:TableCell align="center" bgcolor="#cccccc" class="destaquesecao">
                 <font size="4">Titulo</font>
                </asp:TableCell>
            </asp:TableRow>
      <asp:TableRow runat="server" id="Menu1" Visible="False">
                <asp:TableCell align="left" bgcolor="#cccccc" class="FundoDegrade">
                 <a href="/Menu1.aspx">» 
         Menu1</a>
                </asp:TableCell>
            </asp:TableRow>
            <asp:TableRow runat="server" id="Menu2" Visible="False">
                <asp:TableCell align="left" bgcolor="#cccccc" class="FundoDegrade">
                 <a href="/Menu2.aspx">» 
          Menu2</a>
                </asp:TableCell>
            </asp:TableRow>

    </asp:Table>

     

    Quando a pessoa loga no sistema eu faço a verificação no banco de quais menus que aquela pessoa pode acessar, então eu teria que pegar todas as colunas MenuPessoaLogada da tabela que tenham o IDPessoaLogada, até ai eu consigo fazer, mas como que eu coloco no meu codigo que a coluna MenuPessoaLogada=Menu1(este é o registro que me retornou do banco) tem o Visible="True"?

     

    Meu codigo é em vb:

     

    Code Snippet

    Dim pessoaLogada As New DBPessoaLogada

    If Session("IDPessoaLogada") <> Nothing Then

    Dim dt As DataTable = pessoaLogada.GetPermissoes(Session("IDPessoaLogada"))

    If Not dt Is Nothing Then

    Dim teste As String = dt.Rows(0).Item("Menu").ToString()

    Public WithEvents teste As System.Web.UI.WebControls.TableRow

    teste.Visible = True

    End If

    End If

     

     

    gera o seguinte erro:

    Local variable 'teste' is already declared in the current block

    neste caso eu sei que teste já foi declarado, mas a minha intenção era pegar a string Menu1 que está na variavel teste.

     

    Alguém teria alguma solução para isto?

     

    Desde já agradeço.

    sábado, 6 de dezembro de 2008 16:31

Respostas

  • Olá Marcelo,

     

    esqueci de postar a solução mais cedo.

    meu codigo ficou assim:

     

    Code Snippet

    'declarei a minha tabela onde fica o menu

    Protected WithEvents MenuAdminWebvenda As System.Web.UI.WebControls.Table

     

    If Not dt Is Nothing Then

    For i As Int32 = 0 To dt.Rows.Count - 1

    'Com a Table1 declarada eu consigo percorrer suas linhas e dar visibilidade para as linhas que o Usuario tem permissão

    For j As Int32 = 0 To Table1.Rows.Count - 1

    If Table1.Rows(j).ID = dt.Rows(i).Item("Menu").ToString() Then

    Table1.Rows(j).Visible = True

    j = Table1.Rows.Count - 1

    End If

    Next

    Next

    End If

     

     

    Obrigado pela atenção,

    Renato Sales.

    domingo, 7 de dezembro de 2008 18:12

Todas as Respostas


  • Olá, não sei se entendi bem
    mas mapeando no banco exatamente os itens do menu que o usuario tem acesso,
    não haveria necesidade de setar a visibilidade. Você carregaria só o que o usuario tem acesso.

    se entendi errado escreva que a gente tenta ajudar melhor

     

    []s

     

    domingo, 7 de dezembro de 2008 17:46
  • Olá Marcelo,

     

    esqueci de postar a solução mais cedo.

    meu codigo ficou assim:

     

    Code Snippet

    'declarei a minha tabela onde fica o menu

    Protected WithEvents MenuAdminWebvenda As System.Web.UI.WebControls.Table

     

    If Not dt Is Nothing Then

    For i As Int32 = 0 To dt.Rows.Count - 1

    'Com a Table1 declarada eu consigo percorrer suas linhas e dar visibilidade para as linhas que o Usuario tem permissão

    For j As Int32 = 0 To Table1.Rows.Count - 1

    If Table1.Rows(j).ID = dt.Rows(i).Item("Menu").ToString() Then

    Table1.Rows(j).Visible = True

    j = Table1.Rows.Count - 1

    End If

    Next

    Next

    End If

     

     

    Obrigado pela atenção,

    Renato Sales.

    domingo, 7 de dezembro de 2008 18:12