MENUS - VB.NET
Citação::
Nicksoft, diferente isso que vc fez..
tem alguma melhoria em desempenho ao metodo tradicional?
joaobenevides, o metodo do meste também funciona, o que vc precisa realmente fazer é checar um campo com if depois de buscar ele com um datareader
então não sei se em desempenho, ou qq outra coisa, mas considero não tradicional, a velha separação por grupos de usuários, tal grupo isso aquilo, nesse método cada usuário pode ser único....mas veja a postagem do JCM0867, mais flexÃvel ainda, quem sabe uma misturada nas duas técnicas...
JCM0867
voce poderia me dizer se voce bsuca os menus , cadastra os menus na mao como voce faz
voce poderia me dizer se voce bsuca os menus , cadastra os menus na mao como voce faz
eu faço assim....
....onde a variável [Ô]Nome[Ô] é o nome do seu menu onde é buscado no controle menuStrip1. Se Permissao = [Ô]S[Ô], true, caso contrário false.
....e também eu cadastro os menus em uma tabela chamada Menus, mas não cadastro na mão, faço um FOR no controle menuStrip toda vez que muda a versão do sistema e salvo nessa tabela, claro sempre verificando se o menu já existe. Daà tenho outra tabela chamada MenuPermissão onde é relacionada com a tabela Menu e Usuários.
....também faço dinamicamente e não adicionando checkbox como vi as imagens acima. Já que salvo os menus em uma tabela, carrego eles em um GRID e dou permissão por ali mesmo.
private void HabilitaMenus(string Nome,string Permissao)
{
if (Permissao == [Ô]S[Ô]) menuStrip1.Items.Find(Nome, true)[0].Visible = true;
if (Permissao == [Ô]N[Ô]) menuStrip1.Items.Find(Nome, true)[0].Visible = false;
}
....onde a variável [Ô]Nome[Ô] é o nome do seu menu onde é buscado no controle menuStrip1. Se Permissao = [Ô]S[Ô], true, caso contrário false.
....e também eu cadastro os menus em uma tabela chamada Menus, mas não cadastro na mão, faço um FOR no controle menuStrip toda vez que muda a versão do sistema e salvo nessa tabela, claro sempre verificando se o menu já existe. Daà tenho outra tabela chamada MenuPermissão onde é relacionada com a tabela Menu e Usuários.
....também faço dinamicamente e não adicionando checkbox como vi as imagens acima. Já que salvo os menus em uma tabela, carrego eles em um GRID e dou permissão por ali mesmo.
o que eu queria saber de meus amigos é voce cadastra os menus no banco de dados, eu faz alguma coisa no sistema para pegar os nomes do menus
eu gravo os menus no banco de dados. Tenho uma tabela chamada Menu onde gravo dos os menus do controle menuStrip. Tenho também uma tabela chamada Menu_Permissao onde é relacionado com a tabela Menu e Usuários assim eu sei o usuário tem permissão para tal menu ou não.
se nao for pedir muinto como voce faz (codigo) para ver os nomes do menu ?
primeiro pego os menus do menuStrip assim:
depois faço o foreach em allItems para gravar no banco de dados
[txt-color=#0000f0]List[/txt-color]<ToolStripMenuItem> allItems = [txt-color=#0000f0]new List[/txt-color]<ToolStripMenuItem>();
[txt-color=#0000f0]foreach[/txt-color] (ToolStripMenuItem toolItem in menuStrip.Items)
{
allItems.Add(toolItem);
//add sub items
allItems.AddRange(GetItems(toolItem));
}
private IEnumerable<ToolStripMenuItem> GetItems(ToolStripMenuItem item)
{
foreach (ToolStripMenuItem dropDownItem in item.DropDownItems)
{
if (dropDownItem.HasDropDownItems)
{
foreach (ToolStripMenuItem subItem in GetItems(dropDownItem))
yield return subItem;
}
yield return dropDownItem;
}
}
depois faço o foreach em allItems para gravar no banco de dados
foreach (Itens in allItems)
{
//...código para gravar no banco de dados
}
ok vou tentar obrigado
Citação::
JCM0867
voce poderia me dizer se voce bsuca os menus , cadastra os menus na mao como voce faz
Fiz na unha, fui lendo o menu e colocando no form, caso alterar o menu futurande só precisa colacar aquele item altando.
A rotina de cores funciona assim:
Private Sub lblCadastroLivros_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblCadastroLivros.Click
If lblCadastroLivros.ForeColor = Color.Navy Then
lblCadastroLivros.ForeColor = Color.Maroon
ElseIf lblCadastroLivros.ForeColor = Color.Maroon Then
lblCadastroLivros.ForeColor = Color.Gray
Else
lblCadastroLivros.ForeColor = Color.Navy
End If
End Sub
F001E no seu exemplo voce colocar
foreach (Itens in allItems)
{
//...código para gravar no banco de dados
}
quando mando para o vb ele me diz
Erro 1 Um tipo e um identificador são necessários em uma instrução foreach
logo quando coloco o mouse em cima ele me diz
O nome de namespace ou o tipo [ô]itens[ô] não pôde ser encontrado. Precisa de uma diretiva using ou de uma referência de assembly ?
foreach (Itens in allItems)
{
//...código para gravar no banco de dados
}
quando mando para o vb ele me diz
Erro 1 Um tipo e um identificador são necessários em uma instrução foreach
logo quando coloco o mouse em cima ele me diz
O nome de namespace ou o tipo [ô]itens[ô] não pôde ser encontrado. Precisa de uma diretiva using ou de uma referência de assembly ?
Tópico encerrado , respostas não são mais permitidas