Preenchendo um controle DropDowlist

Preencher uma caixa de combinação(dropdownlist) com as informações de uma base de dados Access ou SQL Server é muito simples no ASP.NET. Neste artigo eu vou mostrar como você pode fazer isto.

 

Para este artigo eu vou criar uma base de dados no Access chamada Formula1.mdb e neste banco de dados a tabela Pilotos e a tabela Corridas ; cada uma terá a seguinte estrutura :

 

Tabela Pilotos com os nomes , números e equipes dos pilotos da fórmula 1 atual. Tabela Corridas com as corridas de fórmula 1 da temporada.

 

Vou criar uma página ASP.NET onde irei carregar uma caixa de combinação com o nome(NomeCorrida) das corridas e oito , eu disse oito, caixa de combinações com os nomes dos Pilotos. A ídéia a criar um formulário onde o usuário possa fazer um palpite quanto a classificação do grid de largada. Só vou implementar o preenchimento das combos.

 

Use o Visual Studio.NET ou o bloco de notas ( a escolha é sua ...) e cria um arquivo com a extensão . aspx ( dica : para salvar o arquivo com esta extensão no bloco de notas clique em Salvar Como e informe o nome do arquivo completo com extensão entre aspas.). Ex: f1Palpite.aspx. (este será o nome do nosso arquivo). Agora digite o código conforme mostrado abaixo: arquivo f1palpite.aspx

 

<%@ Import Namespace="System.Data.OLEDB" %>
<script language="VB" runat="server">

Sub Page_Load(Src As Object, E As EventArgs)

Dim strConn as string ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & server.MapPath & "/dados/Formula1.mdb"
Dim Conn1 as OLEDBConnection
Dim Rdr1 as OLEDBDatareader
Dim Cmd1 as OLEDBCommand
Dim strSQL as string

Conn1=New OLEDBConnection(strConn)

strSQL="select distinct NomeCorrida from Corridas"
Cmd1=New OLEDBCommand(strSQL,Conn1)
Conn1.Open()
Rdr1=Cmd1.ExecuteReader()
cr.DataSource = Rdr1
cr.DataBind()
Rdr1.Close()

strSQL="select NomePiloto from Pilotos"
Cmd1.commandtext=strSQL
Rdr1=Cmd1.ExecuteReader()
pl1.DataSource = Rdr1
pl1.DataBind()
Rdr1.Close()

strSQL="select NomePiloto from Pilotos"
Cmd1.commandtext=strSQL
Rdr1=Cmd1.ExecuteReader()
pl2.DataSource = Rdr1
pl2.DataBind()
Rdr1.Close()

strSQL="select NomePiloto from Pilotos"
Cmd1.commandtext=strSQL
Rdr1=Cmd1.ExecuteReader()
pl3.DataSource = Rdr1
pl3.DataBind()
Rdr1.Close()

strSQL="select NomePiloto from Pilotos"
Cmd1.commandtext=strSQL
Rdr1=Cmd1.ExecuteReader()
pl4.DataSource = Rdr1
pl4.DataBind()
Rdr1.Close()

strSQL="select  NomePiloto from Pilotos"
Cmd1.commandtext=strSQL
Rdr1=Cmd1.ExecuteReader()
pl5.DataSource = Rdr1
pl5.DataBind()
Rdr1.Close()

strSQL="select NomePiloto from Pilotos"
Cmd1.commandtext=strSQL
Rdr1=Cmd1.ExecuteReader()
pl6.DataSource = Rdr1
pl6.DataBind()
Rdr1.Close()

strSQL="select NomePiloto from Pilotos"
Cmd1.commandtext=strSQL
Rdr1=Cmd1.ExecuteReader()
pl7.DataSource = Rdr1
pl7.DataBind()
Rdr1.Close()

strSQL="select NomePiloto from Pilotos"
Cmd1.commandtext=strSQL
Rdr1=Cmd1.ExecuteReader()
pl8.DataSource = Rdr1
pl8.DataBind()
Rdr1.Close()
Conn1.close()

End Sub

</script>

<html><head>
<title>Caixa de Combinaçao</title>
</head>
<body bgcolor="aqua">

<form runat="server">
<asp:Table runat="server" GridLines="both" BorderWidth="0px">

<asp:TableRow>
  <asp:TableCell>NomeCorrida</asp:TableCell>
    <asp:TableCell><ASP:DropDownList id="cr" datatextfield="NomeCorrida" runat="server"/>
  </asp:TableCell>
</asp:TableRow>

<asp:TableRow>
  <asp:TableCell>Grid de Classificação - Largada</asp:TableCell>
</asp:TableRow>

<asp:TableRow>
  <asp:TableCell>Grid - 1o. Lugar</asp:TableCell>
     <asp:TableCell><ASP:DropDownList id="pl1" datatextfield="NomePiloto" runat="server"/>
  </asp:TableCell>
</asp:TableRow>

<asp:TableRow>
  <asp:TableCell>Grid - 2o. Lugar</asp:TableCell>
    <asp:TableCell><ASP:DropDownList id="pl2" datatextfield="NomePiloto" runat="server"/>
  </asp:TableCell>
</asp:TableRow>

<asp:TableRow>
  <asp:TableCell>Grid - 3o. Lugar</asp:TableCell>
    <asp:TableCell><ASP:DropDownList id="pl3" datatextfield="NomePiloto" runat="server"/>
  </asp:TableCell>
</asp:TableRow>

<asp:TableRow>
  <asp:TableCell>Grid - 4o. Lugar</asp:TableCell>
    <asp:TableCell><ASP:DropDownList id="pl4" datatextfield="NomePiloto" runat="server"/>
  </asp:TableCell>
</asp:TableRow>

<asp:TableRow>
  <asp:TableCell>Grid - 5o. Lugar</asp:TableCell>
    <asp:TableCell><ASP:DropDownList id="pl5" datatextfield="NomePiloto" runat="server"/>
  </asp:TableCell>
</asp:TableRow>

<asp:TableRow>
  <asp:TableCell>Grid - 6o. Lugar</asp:TableCell>
    <asp:TableCell><ASP:DropDownList id="pl6" datatextfield="NomePiloto" runat="server"/>
  </asp:TableCell>
</asp:TableRow>

<asp:TableRow>
  <asp:TableCell>Grid - 7o. Lugar</asp:TableCell>
    <asp:TableCell><ASP:DropDownList id="pl7" datatextfield="NomePiloto" runat="server"/>
  </asp:TableCell>
</asp:TableRow>

<asp:TableRow>
  <asp:TableCell>Grid - 8o. Lugar</asp:TableCell>
    <asp:TableCell><ASP:DropDownList id="pl8" datatextfield="NomePiloto" runat="server"/>
  </asp:TableCell>
</asp:TableRow>

</asp:Table>
</form>
</body></html>

 

Explicando o código : Todo código esta no evento Load da página

 

1- definimos a string de conexão usando um provedor OLEDB , pois o banco de dados Formula1.mdb é um banco de dados Microsoft Access; a seguir declaramos as variáveis objeto que iremos usar no código.

Dim strConn as string ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & server.MapPath & "/dados/Formula1.mdb"
Dim Conn1 as OLEDBConnection
Dim Rdr1 as OLEDBDatareader
Dim Cmd1 as OLEDBCommand
Dim strSQL as string

 

2- Abrimos a conexão :  Conn1=New OLEDBConnection(strConn)

 

3- Criamos um objeto OleDbCommand na conexão , e executamos a propriedade ExecuteReader do objeto DataReader. O objeto cr é a caixa de combinação definida mais abaixo no código. Fechamos o DataReader pois ele mantém um conexão direta com a base de dados

strSQL="select distinct NomeCorrida from Corridas"
Cmd1=New OLEDBCommand(strSQL,Conn1)
Conn1.Open()
Rdr1=Cmd1.ExecuteReader()
cr.DataSource = Rdr1
cr.DataBind()
Rdr1.Close()

 

4- O código abaixo é repetido para os demais controles : Definimos o tipo do objeto OleDbCommand (cmd1) e executamos os mesmos passos para a caixa de combinação pl1.(pl2, pl3, pl4, ...)

strSQL="select NomePiloto from Pilotos"
Cmd1.commandtext=strSQL
Rdr1=Cmd1.ExecuteReader()
pl1.DataSource = Rdr1
pl1.DataBind()
Rdr1.Close()

 

5- O código abaixo refere-se aos controles usados na página. Definimos o objeto do tipo Table e em cada célula o objeto DropDowList (que eu estou chamando caixa de combinação) com a propriedade id identificando cada controle e a propriedade datatextfield indicando o campo vinculado ao controle.

<asp:Table runat="server" GridLines="both" BorderWidth="0px">

<asp:TableRow>
  <asp:TableCell>NomeCorrida</asp:TableCell>
    <asp:TableCell><ASP:DropDownList id="cr" datatextfield="NomeCorrida" runat="server"/>
  </asp:TableCell>
</asp:TableRow>

<asp:TableRow>
  <asp:TableCell>Grid de Classificação - Largada</asp:TableCell>
</asp:TableRow>

<asp:TableRow>
  <asp:TableCell>Grid - 1o. Lugar</asp:TableCell>
     <asp:TableCell><ASP:DropDownList id="pl1" datatextfield="NomePiloto" runat="server"/>
  </asp:TableCell>
</asp:TableRow>
.....

 

Vejamos as propriedades de um controle DropDownList :

 

- AutoPostBack - Se for True causa um envio (post) do formulário quando o cliente altera o item selecionado.

- DataSource - Referencia a fonte de dados que o controle usa para preencher os itens.

- DataTextField - É usado para preencher o campo Text dos itens.

- DataValueField - Usado para preencher o campo Value dos itens.

- Items - Coleção de objetos ListItem onde cada objeto representa um item.

- SelectedItem - Uma referência o item selecionado.

- SelectedIndex - Informa o índice do item selecionado. O primeiro tem índice igual a zero.

 

Evento de um DropDownList : OnSelectedIndexChanged - Iniciado quando o controle tem a propriedade AutoPostBack igual a True e ocorre mudança no item selecionado.

 

O arquivo f1palpite.aspx foi colocado no diretório f1 subordinado a \inetpub\wwwroot. Ao executarmos a página teremos o resultado:

 

Veja o resultado on-line em : http://www.macoratti.net/f1/f1palpite.aspx

 

Moleza não é mesmo ... Aguarde mais artigos sobe ASP.NET e o DataGrid...

Referências:

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti