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
- Button - btnProcurar
- DataGrid - dgDados

Eventos dos controles e rotinas associadas:

- dropdownlist:
evento: OnSelectedIndexChanged
rotina :  dgAtualiza

- button:
evento: onclick
rotina :  pegaDados

- DataGrid:
evento: OnPageIndexChanged
rotina :  mudaPagina

 

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 :

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