 ASP.NET 
- Exibindo resultados dinâmicos em um DataGrid
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").DefaultViewDgDados.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
        vinculaDadosEnd Sub | 
Pegue o projeto completo aqui : 
 buscaDg.aspx
 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