ASP.NET - Exibindo tabelas e campos em um dropdowlist
Trabalhar com esquemas de banco de dados no ASP.NET é muito simples. Neste artigo você vai aprender a tratar esquemas de banco de dados Access para exibir tabelas e campos de tabelas em uma página ASP.NET.
Estarei usando o Web Matrix como editor de código para o exemplo do artigo e testando a execução da página no servidor do Web Matrix.
Antes de ir direto ao assunto vou apenas recordar o básico sobre o controle dropdownlist:
- Para declarar um componente dropdownlist em uma página usamos a seguinte declaração:
<asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList>
- Para incluir alguns itens de forma estática no dropdownlist
<asp:DropDownList
id="DropDownList1" runat="server">
<asp:ListItem Value="TesteDado1">TesteDado1</asp:ListItem>
<asp:ListItem Value="TesteDado2">TesteDado2</asp:ListItem>
</asp:DropDownList>
Nota: Voce pode usar o Visual Studio.NET e usar a caixa de propriedades do controle Properties --> Items para incluir itens.
- Para remover um item da lista usamos : DropDownList.Remove()
- Para limpar toda a lista usamos : DropDownList.Items.Clear()
- Para obter o item selecionado usamos : DropDownList.SelectedItem.Value
Agora abra o Web Matrix e crie uma nova página ASP.NET usando a linguagem VB.NET. O nome dado a página pode ser esquemaTabelaOleDB.aspx.
No modo Design inclua no formulário os componentes: TexTBox , DropDownList , e Button , conforme a figura abaixo:
Na guia Code vamos incluir o código que vai dar vida a página.
No evento Load a página temos: O código do componente dropdownlist - ddlcampos - não exibe nenhum item quando da carga da página.
Sub Page_Load(Source as Object, E as EventArgs) ddlcampos.selectedIndex = -1 End Sub |
O evento CLick do botão de comando - Obter Relação de tabelas do Banco de dados - possui o seguinte código:
Se o nome do banco de dados for informado , ele será aberto e o esquema será obtido para exibição das tabelas do banco de dados no dropdownlist.
Sub Button1_Click(sender As Object, e As EventArgs) if txtNomeBd.text <> "" then Dim Conexao As New OleDbConnection() Dim esquemaTabela As DataTable Dim i As Integer Conexao.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & txtNomeBD.text Conexao.Open() ddlTabelas.Items.Clear() esquemaTabela = Conexao.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"}) For i = 0 To esquemaTabela.Rows.Count - 1 ddlTabelas.Items.Add(esquemaTabela.Rows(i)!TABLE_NAME.ToString) Next i Conexao.Close() end if End Sub |
O evento Click do botão de comando - Obter relação de campos da tabela selecionada - tem o seguinte código :
Montamos a instrução SQL select com no valor selecionado no dropdownlist ddltabelas.
Sub Button2_Click(sender As Object, e As EventArgs) if ddlTabelas.selectedIndex <> -1 then Dim strConn as string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & txtNomeBD.text Dim strSQL as string = "Select * from " & ddlTabelas.SelectedValue.ToString Dim Conexao as New OleDBConnection(strConn) Dim esquemaTabela As DataTable Dim campos As DataRow Dim propriedade As DataColumn Dim Cmd as New OLEDBCommand(strSQL, Conexao) Conexao.Open() Dim dr As OleDbDataReader dr = cmd.ExecuteReader esquemaTabela = dr.GetSchemaTable() ddlCampos.items.Clear() For Each campos In esquemaTabela.Rows For Each propriedade In esquemaTabela.Columns if propriedade.ColumnName="ColumnName" then ddlCampos.Items.add(campos(propriedade).ToString()) End If Next Next dr.Close() Conexao.Close() else end if End Sub |
Ao executar a página iremos obter primeiro a relação das tabelas do banco de dados informado.
Com base na tabela selecionada , ao clicar no botão para exibir os campos, os campos referente a tabela serão exibidos:
Veja a página funcionando em : http://www.visualbasic.mat.br/aspnet/esquemaTabelaOleDb.aspx (o nome do banco de dados esta fixo por questão de segurança)
Pegue o código completo aqui : esquemaTabelaOleDb.zip
Eu sei é apenas ASP.NET , mas eu gosto...
José Carlos Macoratti