SETAR VALUEMEMBER NA COMBOBOX ATRAVéS DE UMA DATA

 Tópico anterior Próximo tópico Novo tópico

SETAR VALUEMEMBER NA COMBOBOX ATRAVéS DE UMA DATA

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#496283 - 17/02/2021 09:39:54

IVANPI
GUAPIARA
Cadast. em:Janeiro/2017


Olá pessoal!

Eu populei uma combobox, através de um Datatable, conforme abaixo:

   Private Sub Carregar_Funcoes()
        Dim funcao As tbFUNCAO
        funcao = New tbFUNCAO

        Dim tabela As DataTable = funcao.Buscar_Funcoes

        Try
            cboFuncao.Items.Add('- SELECIONE -')
            For Each Linha As DataRow In tabela.Rows
                cboFuncao.Items.Add(Linha.Item('FUNCAO_NOME'))
                cboFuncao.ValueMember = Linha.Item('FUNCAO_ID')  '<-- ACHO QUE AQUI NÃO DEVE ESTAR CERTO
            Next

            cboFuncao.SelectedIndex = 0

        Catch ex As Exception
            MessageBox.Show('Ocorreu erro:' & vbNewLine & ex.Message, 'Erro', MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            funcao = Nothing
        End Try
    End Sub



O código acima, consegue popular a combobox, porém estou com dificuldade de como setar o ValueMember para o ID da função, pois no momento em que for gravar no banco de dados, vou gravar a ID da função. Como faço para setar o ValueMember com população da combobox, através de um datatable?

Desde já muito agradecido. :)

Ivan Jpi



#496286 - 17/02/2021 12:43:39

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Coloque fora do If e simplesmente:

cboFuncao.ValueMember = 'FUNCAO_ID'


_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


Resposta escolhida #496291 - 19/02/2021 18:19:34

ROMULOCPD
NOVA FRIBURGO
Cadast. em:Fevereiro/2021


Se você tem um DataTable, vincule ele todo para o DataSource da combo, defiindo DisplayMember e ValueMember com as colunas que terão estes códigos.




#496295 - 20/02/2021 11:16:12

IVANPI
GUAPIARA
Cadast. em:Janeiro/2017


Última edição em 20/02/2021 11:22:04 por IVANPI

Citação:
:
Se você tem um DataTable, vincule ele todo para o DataSource da combo, defiindo DisplayMember e ValueMember com as colunas que terão estes códigos.




Olá, certinho, veja como ficou:

   Private Sub Carregar_Funcoes()
        Dim funcao As tbFUNCAO
        funcao = New tbFUNCAO

        Dim tabela As DataTable = funcao.Buscar_Funcoes

        Try
            cboFuncao.DisplayMember = 'FUNCAO_NOME'
            cboFuncao.ValueMember = 'FUNCAO_ID'
            cboFuncao.DataSource = tabela

            cboFuncao.SelectedIndex = 0

        Catch ex As Exception
            MessageBox.Show('Ocorreu erro:' & vbNewLine & ex.Message, 'Erro', MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            funcao = Nothing
        End Try
    End Sub



Porém, agora, não consigo, incluir um item, que não esteja nessa Datatable, que foi vinculada ao Datasource, por exemplo:

na primeira linha do combobox viesse com ' - SELECIONE - '.  

Se puderem me dar mais uma luz.

Valeu.

Ivan Jpi




#496296 - 20/02/2021 11:34:54

IVANPI
GUAPIARA
Cadast. em:Janeiro/2017


Citação:
:
:
Se você tem um DataTable, vincule ele todo para o DataSource da combo, defiindo DisplayMember e ValueMember com as colunas que terão estes códigos.




Olá, certinho, veja como ficou:

   Private Sub Carregar_Funcoes()
        Dim funcao As tbFUNCAO
        funcao = New tbFUNCAO

        Dim tabela As DataTable = funcao.Buscar_Funcoes

        Try
            cboFuncao.DisplayMember = 'FUNCAO_NOME'
            cboFuncao.ValueMember = 'FUNCAO_ID'
            cboFuncao.DataSource = tabela

            cboFuncao.SelectedIndex = 0

        Catch ex As Exception
            MessageBox.Show('Ocorreu erro:' & vbNewLine & ex.Message, 'Erro', MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            funcao = Nothing
        End Try
    End Sub



Porém, agora, não consigo, incluir um item, que não esteja nessa Datatable, que foi vinculada ao Datasource, por exemplo:

na primeira linha do combobox viesse com ' - SELECIONE - '.  

Se puderem me dar mais uma luz.

Valeu.

Ivan Jpi



Olá de novo, consegui fazer aqui e vou compartilhar:



   Private Sub Carregar_Funcoes()
        Dim funcao As tbFUNCAO
        funcao = New tbFUNCAO

        Dim tabela As DataTable = funcao.Buscar_Funcoes

        Try

           Dim nova As DataRow = tabela.NewRow

            nova.Item('FUNCAO_NOME') = '- SELECIONE -'
            nova.Item('FUNCAO_ID') = 0
            tabela.Rows.InsertAt(nova, 0)
            tabela.AcceptChanges()

            cboFuncao.DisplayMember = 'FUNCAO_NOME'
            cboFuncao.ValueMember = 'FUNCAO_ID'
            cboFuncao.DataSource = tabela
            
           cboFuncao.SelectedIndex = 0

        Catch ex As Exception
            MessageBox.Show('Ocorreu erro:' & vbNewLine & ex.Message, 'Erro', MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            funcao = Nothing
        End Try
    End Sub



Desde já agradecido, a todos que colaboraram.

Valeu mesmo.

Ivan Jpi





#496297 - 20/02/2021 16:30:50

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Beleza! Agora ao invés de um pesado objeto DataTable, use um List<T> que além de mais rápido, é mais simples, mais versátil e muito mais indicado. Não negligencie OOP. Se vai usar .NET, use da maneira mais indicada.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por IVANPI em 21/02/2021 14:18:18