Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bruno_mosciatti

Montar dropdownlist com banco

Recommended Posts

Bom dia pessoal

preciso de uma ajudinha de vocês, aparentemente básica!

Seguinte.. Tenho um dropdownlist que carrega a partir de um banco, até aí tudo bem!

Mas preciso implementar o seguinte, só vai me mostrar as opções do dropdownlist de o usuário tiver acesso a cada opção..

Vamos lá :

O dropdownlist carrega a partir desses dados do banco :

33utmas.jpg

Esse código mostra o dropdown e pega o valor (OPERAC) em relação a descrição (ODESC).

 Private Sub CarregarDDLOperacoes()

        Dim sSQL As String
        Dim conn As OleDbConnection
        Dim da As OleDbDataAdapter
        Dim ds As DataSet = New DataSet

        Try
            sSQL = ""
            sSQL = " SELECT DISTINCT OPERAC.OPERAC, OPERAC.ODESC "
            sSQL = sSQL & " FROM OPERAC "

            conn = New OleDbConnection(dp & dbsource)
            conn.Open()
            'Try
            da = New OleDbDataAdapter(sSQL, conn)
            ds = New DataSet()
            da.Fill(ds, "OPERAC")

            ddlOperacoes.DataTextField = "ODESC"
            ddlOperacoes.DataValueField = "OPERAC"
            ddlOperacoes.DataSource = ds.Tables("OPERAC").DefaultView
            ddlOperacoes.DataBind()

            ddlOperacoes.Items.Insert(0, "Selecione...")
            ddlOperacoes.SelectedIndex = ddlOperacoes.Items.IndexOf(ddlOperacoes.Items.FindByText("OPERAC"))

            conn.Close()
        Catch
            lblMsg.Text = "Erro ao carregar campo OPERAÇÕES!"
        End Try

    End Sub

Beleza...

Agora vem o problema, como já falei acima, preciso FILTRAR as opções de acordo com os acessos..
E aqui está a outra tabela do banco de dados, esta filtra os acessos :

eamx5z.jpg

Então, traduzindo : o usuário a025930 tem a cesso a operação 1, então quando ele só poderar VER no dropdownlist a operação 1.

O usuário EJ70320 tem tanto a operação 1 quanto a operação 2 como opções no dropdownlist, e assim por diante.


Então, retomando:
Hoje estou mostrando as 5 operações no dropdownlist, para qualquer USERID.
Preciso que mostre em relação ao acesso da pessoa, já fiz o banco e "STS" será a comparação.. Basicamente se o STS do usuário estiver 1 então ele tem acesso. Se usuário X tiver acesso a Operação1 e 2, só vai mostrar essas operações.

Espero que tenha conseguido explicar bem, conto com a ajuda de vocês.
Se precisarem de mais alguma informação, posso passar.

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, ai é por if, você tem que montar uma variável com o id da permissão, ai SE o usuário tiver permissão X você monta uma query e coloca os resultados em uma DataTable e depois define o combo com a datasource nessa DataTable, mas SE o usuário tiver Y de permissão ai é outra query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, ai é por if, você tem que montar uma variável com o id da permissão, ai SE o usuário tiver permissão X você monta uma query e coloca os resultados em uma DataTable e depois define o combo com a datasource nessa DataTable, mas SE o usuário tiver Y de permissão ai é outra query.

Cara, até entendi sua lógica.. mas você falando assim não consigo colocar "no papel". Pode exemplificar de acordo com meus dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro você guarda em uma variável global o tipo de permissão que esse cara tem. Depois você faz um if:

 

SE essa variável tiver a permissão 1 (que da acesso a operação 1, por exemplo), você monta uma query para selecionar só os dados da operação 1, joga esses valores em uma datatable e depois define o datasource do dropdown como essa datatable.

 

O mesmo vale para quando há mais de uma operação, o que muda é só a query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro você guarda em uma variável global o tipo de permissão que esse cara tem. Depois você faz um if:

 

SE essa variável tiver a permissão 1 (que da acesso a operação 1, por exemplo), você monta uma query para selecionar só os dados da operação 1, joga esses valores em uma datatable e depois define o datasource do dropdown como essa datatable.

 

O mesmo vale para quando há mais de uma operação, o que muda é só a query.

 

No caso eu tava pensando em tipo : Se operação = 4 , status = 1 então tem acesso.. porque tem que verificar qual é a operação e se o status(acesso) está habilitado (1) ou desabilitado (0).

 

Khaos, você poderia por isso em códigos? Estou com dificuldades =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, são dois if's, um para verificar qual é a operação e outro pro status.

 

tudo bem, mas o problema é realmente como vou filtrar as opções do dropdownlist.

 

sei que preciso verificar qual é a operação e compará-la ao user_id para ver se este tem acesso, até aí ok..

 

depois de comprar operaçao com id, como faço pra mostrar ou não mostrar opções do dropdown?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, você vai realizar uma Query no seu banco de dados (supondo que você já tem as opções no banco) e depois setar o DropDownList.Datasource = <datatable>.

 

Se você ainda não tem as opções no banco então é mais simples ainda. Você cria um objeto DataTable e adiciona duas colunas ([inline]DataTable1.Columns.Add("nome")[/inline]), a segunda vai ser o valueMember, ou seja, o valor da operação de verdade, e a primeira o DisplayMember, ou seja, aquele valor que será exibido ao usuário, então você pode ter lá o Display com o nome da operação e o Value com o ID da mesma.

 

Depois você vai fazer o if e verificar qual é a permissão deste usuário, se for 1 então você vai adicionar linhas a esta DataTable: [inline]DataTable1.Rows.Add("coluna1","Coluna2" )[/inline] e cada linha conterá o displaymember, que é o nome da operação, e o valuemember, que é o valor desta operação (Você pode definir um ID qualquer se você ainda não definiu). Por fim você pode setar [inline]Dropdownlist1.DataSource = DataTable1[/inline] e também indicar que o seu displaymember é sua coluna 1 com [inline]Dropdownlist1.DisplayMember = "NomeColuna1"[/inline] e o mesmo para o value member através do [inline]Dropdownlist1.ValueMember = "NomeColuna2"[/inline]

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.