VB .NET - Preenchendo as colunas do tipo Combobox no DataGridView
Neste tutorial vou mostrar como preencher as colunas do tipo Combobox no DataGridView usando o VB .NET.
Em meu artigo eu mostrei como criar colunas do tipo combobox e preenchê-las via código.
Neste artigo vamos preencher as colunas obtendo as informações de um banco de dados relacional.
Eu vou usar como exemplo o banco de dados Northwind.mdb mas basta alterar a string de conexão que o exemplo pode ser usado com qualquer banco de dados suportado.
Abra o Visual Basic 2010 Express Edition e crie um novo projeto (File-> New Project) do tipo Windows Forms Application com o nome DataGridView_ComboBox;
A seguir, a partir da ToolBox inclua os controles DataGridView(gdvDados) e Button(btnPreencherCombo) no formulário form1.vb e defina o leiaute no formulário conforme a figura abaixo:
Figura 1.0 - Leiaute do formulário da aplicação |
Na figura você nota que já foram definidas as colunas do tipo Combobox no DataGridView.
Para fazer isso você pode seguir os seguintes passos
1-) selecione a opção Add Column em DataGridView Tasks:
2-) Inclua duas colunas alterando as propriedades name, type e Header text conforme a abaixo:
Columa 1
Coluna 2
|
-3) O resultado final deste processo pode ser visto na figura 1.0 acima.
Nota: Podemos configurar outras propriedades para a coluna como a largura(Width) , ToolTipText, número de itens, etc.
Nota:
Podemos obter o mesmo resultado via código para isso
basta usar o código abaixo: Dim Produtos As New
DataGridViewComboBoxColumn()
|
Agora vamos ao código que preenche as combobox.
Declare os namespaces usados no exemplo:
Imports System.Data
Imports System.Data.OleDb
Obs: Usei esses namespaces pois estou acessando o banco de dados Access. Para outro banco de dados utilize o respectivo namespace.
No evento Click do botão vamos colocar o código para acessar os dados e preencher as colunas do DataGridView:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPreencherCombo.Click 'string de conexão com o banco de dados Northwind.mdb Dim stringConexao As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dados\northwind.mdb;" 'define a conexao, o comando e o adapter Dim conexao As New OleDbConnection(stringConexao) Dim cmd As New OleDbCommand("SELECT ProductID,ProductName FROM Products", conexao) Dim adapter As New OleDbDataAdapter(cmd) 'define o dataset Dim ds As New DataSet Try adapter.Fill(ds, "Products") 'preenche o dataset Catch ex As Exception MessageBox.Show("Erro ao acessar os dados.") Exit Sub End Try 'atribui o datasource a coluna combobox do datagridivew Me.Produtos.DataSource = ds.Tables("Products") 'atribui o valor que será exibido na coluna Me.Produtos.DisplayMember = "ProductName" 'atribui o valor que será lido quando um item for selecionado Me.Produtos.ValueMember = "ProductID" 'repete o procedimento para a tabela Categories para a coluna Categorias cmd.CommandText = "SELECT CategoryID,CategoryName FROM Categories" adapter.SelectCommand = cmd Try adapter.Fill(ds, "Categories") Catch ex As Exception MessageBox.Show("Erro ao acessar os dados.") Exit Sub End Try Me.Categorias.DataSource = ds.Tables("Categories") Me.Categorias.DisplayMember = "CategoryName" Me.Categorias.ValueMember = "CategoryID" End Sub |
Executando o projeto e clicando no botão Preenche Combobox iremos obter:
Pegue o projeto completo aqui: DataGridView_Combobox.zip
Filipenses 1:27
Somente portai-vos, dum modo digno do evangelho de Cristo, para que, quer vá e vos veja, quer esteja ausente, ouça acerca de vós que permaneceis firmes num só espírito, combatendo juntamente com uma só alma pela fé do evangelho;Referências: