quarta-feira, 29 de dezembro de 2010

Populando um ComboBox VB.NET

Olá pessoas,

Hoje estou aqui para mostrar como se popula um ComboBox no VB.NET, vamos lá!

Considerando que você já tenha criado seu projeto, e já tenha adicionado o componente em sua aplicação, no meu caso meu combobox foi nomeado para comboDisco.


Dentro do código do form, criei uma função que irá popular todo o combobox com as informações de um retorno de um select no SQL Server.

A função é esta:


Protected Function carregarComboDisco()
        Dim objDisco As New Disco
        Dim dt As DataTable
        Try
'Após instanciar a classe Disco para um novo objeto, meu objeto terá todas as funções da classe instanciada, por medida de segurança sempre coloco meus código dentro de um Try, assim caso aconteça algum erro, cairá diretamente no Catch, onde, irá mostrar a mensagem de erro através do MessageBox.Show.
            dt = objDisco.listarDiscos
            Me.comboDisco.ValueMember = Nothing
            Me.comboDisco.DisplayMember = Nothing
            Me.comboDisco.DataSource = Nothing

            Me.comboDisco.DataSource = dt
'O DisplayMember irá mostar o conteúdo do do campo "disco", ou seja, será o que esta escrito na tabela do banco de dados
            Me.comboDisco.DisplayMember = "disco"
'O ValueMember é minha chave primária da tabela do banco de dados, ou seja, minha chave primária na tabela de discos é o "codigo_disco"
            Me.comboDisco.ValueMember = "codigo_disco"
        Catch ex As Exception
            MessageBox.Show("Falha ao carregar modelos de discos. " & ex.ToString, "CMN Controle", Windows.Forms.MessageBoxButtons.OK, Windows.Forms.MessageBoxIcon.Error)
        End Try
        Return comboDisco
    End Function


Esta função acima é a que irá popular as informações no combobox, mas sem a classe e seu método de ListarDiscos, ela não fará nada, ou melhor, fará, irá exibir uma mensagem de erro :-D.

Abaixo irei colocar o método de select no banco de dados.


Public Function listarDiscos() As DataTable
        Dim comando As New SqlCommand
        Dim da As New SqlDataAdapter
        Dim ds As New DataSet
'Aqui estou abrindo a conexão como banco de dados, no seu caso, você  terá que usar a sua classe de conexão.
        comando.Connection = Me.conn
'Como estou executando um comando e não uma procedure, o CommandType, deve ser o Text, caso contrario, é só setar para Procedure
       comando.CommandType = CommandType.Text
'Meu comando é apenas um select em uma tabela qualquer, para ficar mais, vamos dizer "bonito", coloquei um order by para retornar, neste caso, em ordem alfabética.
        comando.CommandText = "select * from t_disco order by disco"

        da.SelectCommand = comando
        Try
'Coloque o nome de sua tabela dentro do "", no meu caso, minha tabela é a "t_disco" que irá retornar o resultado dentro de um DataSet
            da.Fill(ds, "t_disco")
        Catch ex As Exception
'Caso aconteça algum erro, por qualquer motivo, será gerada uma nova Exception, que irá retornar diretamente para o Catch do form, exibindo a mensagem que você colocar dentro do " ".
            Throw New Exception("Falha ao carregar disco")
        End Try
' Para finalizar, se acaso tudo ocorreu bem, os resultados serão retornados para o form.
        Return ds.Tables("t_disco")
    End Function


Para testar, no load do Windows form, você terá que colocar a função para ser carregada, e pronto! Simples assim. Não sei se deixei bem claro como fazer, mas qualquer dúvida é só comentar.

Quero agradecer a uma grande pessoa, que normalmente chamo de Mestre, pois o cara manja muito, e é o grande responsável por eu saber este pouquinho de VB.NET.

O mestre é o grande José Bressan Júnior, muito obrigado!

Pessoal é isto aí! Até mais e Feliz Ano Novo para todos!

Um abraço.