VB.NET - Incluindo DataRows em uma combobox
Já vimos como preencher uma combobox usando Data Binding. Lembra ?
Se não lembra não custa nada mostrar o código para fazer este serviço. Veja o código a seguir:
Imports System.Data.OleDb 'define o comando SQL para selecionar os dados da tabela funcionarios Dim strSQL As String = "Select CódigoDoFuncionário,Nome From Funcionários" 'define a conexao com o banco de dados Northwind.mdb Dim Connection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\teste\Northwind.mdb") 'define um dataadapter para a conexao Dim da As New OleDbDataAdapter(strSQL, Connection) 'define e preenche o dataset com os dados da tabela funcionarios Dim ds As New DataSet da.Fill(ds, "Funcionarios")
|
'cria uma nova tabela Dim dt As New DataTable dt.Columns.Add("Nome", GetType(System.String)) dt.Columns.Add("CódigoDoFuncionário", GetType(System.String)) ' Define dois datarows para preencher a tabela Dim dr As DataRow Dim drNovaRow As DataRow 'percorre a tabela funcionarios definida e preenche com dados da tabela da base de dados For Each dr In ds.Tables("Funcionarios").Rows() drNovaRow = dt.newRow() drNovaRow("Nome") = dr("Nome") drNovaRow("CódigoDoFuncionário") = dr("CódigoDoFuncionário") dt.Rows.Add(drNovaRow) Next |
'define o estilo da combobox cboFunci.DropDownStyle = ComboBoxStyle.DropDownList 'preenche a combobox com os nomes dos funcionarios e seleciona o primeiro valor With ComboBox1 .DataSource = dt .DisplayMember = "Nome" .ValueMember = "CódigoDoFuncionário" .SelectedIndex = 0 End With |
O resultado da execução do código acima em um formulário Windows com uma combobox e um botão de comando é:
Mas queremos obter o mesmo resultado sem usar data binding. Como fazer isto ?
"Elementar meu caro Watson": Crie um novo projeto do tipo Windows Application e no formulário inclua uma combobox e um botão de comando.
Para fazer um pouco diferente vamos incluir um novo módulo no projeto no menu Project | Add Module
Neste módulo insira o seguinte código :
'define a string de conexão com o SQL Server :
base de dados TesteWind (Nothwind) Public strconexaoSQL As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\teste\Northwind.mdb" 'define as variáveis objeto para conexão , dataadapter , dataset Public sqlconexao As New OleDbConnection(strconexaoSQL) Public da As New OleDbDataAdapter Public ds As New DataSet |
Agora no evento Load do formulário vamos digitar o código abaixo:
'define o comando SQL para selecionar o codigo o
nome o cargo e o pais da tabela funcionarios Dim strSQL = "SELECT CódigoDoFuncionário, Nome From Funcionários" 'cria um novo daAdapter para a conexao da = New OleDbDataAdapter(strSQL, sqlconexao) 'preenche o dataset - ds da.Fill(ds, "Funcionários") |
Agora no evento click do botão de comando insira o código abaixo:
Private Sub
btncboFunci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btncboFunci.Click 'define uma tabela e referencia a primeira tabela que no caso é a tabela funcionarios Dim dt As New DataTable dt = ds.Tables("Funcionários") 'define um objeto DataRow que representa um registro da tabela Dim dr As DataRow ' Preenche a combobox com os nomes dos funcionarios For Each dr In dt.Rows() cboFunci.Items.Add(dr("Nome")) Next 'selecione o primeiro valor cboFunci.SelectedIndex = 0 End Sub |
O resultado final é o mesmo...
Até a próxima...
Rom 3:10 como está escrito: Não há justo, nem sequer um.
Rom 3:11 Não há quem entenda; não há quem busque a Deus.
Rom 3:12 Todos se extraviaram; juntamente se fizeram inúteis. Não há quem faça o bem, não há nem um só.
Rom 3:13 A sua garganta é um sepulcro aberto; com as suas línguas tratam enganosamente; peçonha de áspides está debaixo dos seus lábios;
Rom 3:14 a sua boca está cheia de maldição e amargura.
Rom 3:15 Os seus pés são ligeiros para derramar sangue.
Rom 3:16 Nos seus caminhos há destruição e miséria;
Rom 3:17 e não conheceram o caminho da paz.
Referências: