ASP.NET - Exibindo resultados dinâmicos em um DataGrid
Neste artigo vou mostrar como você pode realizar uma busca dinâmica em um banco de dados Access e exibir o resultado em um DataGrid.
Neste artigo vou usar o velho banco de dados Norhtwind.mdb e as tabela Customers(Clientes) e Orders(Pedidos).
Vamos criar um objeto DataAdapter e um objeto Command junto com um DataSet pois desejamos efetuar paginação de dados no DataGrid.
Para variar eu vou usar o WebMatrix como editor de código VB.NET para criar a página ASP.NET chamada buscaDb.aspx.
Abrindo o WebMatrix inclua os controles na guia Design conforme abaixo:
Nomes usados
nos controles: - dropdownlist -
ddlClientes Eventos dos controles e rotinas associadas: - dropdownlist: - button: - DataGrid: |
O código HTML é gerado automaticamente , portanto , não vou comentá-lo.
O código referente ao script VB.NET que deve ser inserido na guia Code é
o seguinte:
Imports usados no projeto:
<%@ Page Language="vb" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
1- Evento Load da página:
Neste código fazemos o seguinte :
definimos a string de conexão com o banco de dados
definimos a string SQL par selecionar o codigo do cliente e o nome da companhia da tabela Customers.
Criamos uma conexão
Criamos um DataReader
Criamos um Command
Abrimos a conexão
Executamos o comando para gerar o DataReader
atribuimos o DataReader a controle dropdownlist
Exibimos o nome da companhia(CompanyName)no controle mas quando selecionamos um item o valor passado é o código do cliente(CustomerID)
Vinculamos os dados ao datagrid
fechamos a conexão
Sub Page_Load(Source as Object, E as EventArgs) if not Page.IsPostBack then Dim strConn as string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("Northwind.mdb") Dim strSQL as string = "Select CustomerID, CompanyName from Customers" Dim conexaoBD as New OleDbConnection(strConn) Dim objDR as OleDbDataReader Dim Cmd as New OleDbCommand(strSQL, conexaoBD) conexaoBD.Open() objDR=Cmd.ExecuteReader(system.data.CommandBehavior.CloseConnection) ddlCliente.DataSource = objDR ddlCliente.DataValueField="CustomerID" ddlCliente.DataTextField="CompanyName" ddlCliente.vinculaDados() conexaoBD.Close() end if End Sub |
A rotina vinculaDados() é mostrada abaixo. Nela fazemos o seguinte:
Sub vinculaDados() Dim strConn as string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("Northwind.mdb") Dim strSQL as string = "Select * from Orders Where CustomerID = @CustID Order by OrderID " Dim conexaoBD as New OleDbConnection(strConn) Dim ds as DataSet=New DataSet() Dim da as OleDbDataAdapter = New OleDbDataAdapter Dim Cmd as New OleDbCommand (strSQL,conexaoBD) da.SelectCommand = cmd cmd.Parameters.Add(New OleDbParameter("@CustID", ddlCliente.SelectedItem.Value)) da.Fill(ds,"Orders") DgDados.Datasource=ds.Tables("Orders").DefaultView DgDados.DataBind() End Sub |
As rotinas pegaDados() e dgAtualiza() estão vinculados aos eventos dos controles Button e Dropdownlist usados no WebForm.
- pegaDados() - será chamada quando o botão de comando - Procurar for clicado. - dgAtualiza() - será chamada quando o usuário fizer uma seleção no controle dropdownlist.
Sub pegaDados(Source as Object, E as EventArgs) vinculaDados End Sub Sub dgAtualiza(Source as Object, E as EventArgs) DgDados.currentpageindex=0 End Sub
|
Finalmente a rotina mudaPagina() é usada no evento OnPageIndexChanged do controle DataGrid:
Sub MudaPagina(sender As Object, e As DataGridPageChangedEventArgs) DgDados.CurrentPageIndex = e.NewPageIndex vinculaDados End Sub |
Pegue o projeto completo aqui : buscaDg.aspx
Veja a página funcionando aqui : http://www.visualbasic.mat.br/aspnet/buscaDg.aspx
Eu sei, é apenas ASP.NET , mas eu gosto ...
José Carlos Macoratti