Tópico anterior Próximo tópico Novo tópico
VB.NET
#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 ![]() |
Coloque fora do If e simplesmente:
cboFuncao.ValueMember = 'FUNCAO_ID' _______________________________________________________________________ Virei Oráculo! 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 ![]() |
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 Oráculo! The end is nigh, be ready for the nukes! |
|||
Tópico anterior Próximo tópico Novo tópico